js基本语法汇总

1、分类

ECMAScript  js基本语法与标准

DOM        Document Object Model文档对象模型

BOM        Browser Object Model浏览器对象模型

    tips:DOM和BOM都是一套API(Application programing interface)

2、注释方式

style  /*  */

body   

script  //

        /* */

        /**

        *  js说明文档注释

        */

3、简单指令

alert("");          提示框;

confirm("");        确认框,点击后会响应返回true或false;           

prompt();          弹出一个输入框;

document.write("");

console.log("");    在控制台打印相应的信息;

console.dir("");    在控制台打印出该对象的所有信息;

4、变量命名

数字(0-9)、字母(a-z,A-Z)、下划线(_);

    tips:应避免保留字和关键字;

5、NaN和isNaN

isNaN(number),如果number不是数字,则为true;

Number(number),在转换为数字类型时,若number不是数字,则返回NaN;

6、转义字符

\     

\r  回车

\n  空格

\t  缩进

\\  反斜杠

7、逻辑短路、逻辑中断

true || 6;      逻辑或短路,左边为ture返回右值;

6  &&  true;  逻辑与短路,左边false返回右值;

8、优先级

    * / %

    +  -

    &&

    ||

    ?

tips:自上而下优先级越来越高

9、类型转换(type)

parseInt("12a3");  转为数字,尝试强转;

parseFloat("123.123");

data.toString();

String(data);

    tips:变量声明未赋值,其值为undefined;

        对象为空,其值为null;

10、三元表达式

eg  :  a>b?a=1:a=2;

格式:

    判断条件?true的时候执行的操作:false的时候执行的操作;

11、数组Array

(1)、定义法

    构造函数:

            var arr = new Array("123","abc","xxx");

    字面量:

            var arr = ["123","646","abc"];

    数组长度:

            var arr = new Array(6);(数组长度为6);

(2)、赋值

    arr[0]=1;

12、形参和实参

定义函数时,function funcA(a,b,c){},其中的a、b、c即为形参;

调用函数时,funcA(1,2,3);其中的1、2、3即为实参;

tips:function里面有一个arguments对象,里面存有所有传进函数的实参;

13、函数function

(1)、函数命名

    1、  可以使用字符、数字、下划线、$;

    2、  不能以数字开头;

    3、  不能使用关键字和保留字;

    4、  区分大小写;

    5、  建议要有意义 --  动词+名字结构;

    6、  驼峰命名法;

    7、  函数名不能重名,后面写的重名函数会把前面写的函数给覆盖掉;

(2)、函数的返回值

返回值:

    当函数执行完毕之后,所得到的结果就是一个函数返回值

    任意函数都有返回值

1、  在函数内部没有显示的写有return的时候,函数的返回值是undefined;

2、  当函数内部有return,但是return后面没有跟着任何内容或者数据的时候,

函数的返回值是undefined,并且return后面的代码不会执行;

3、  当return后面跟着内容或者数据的时候,函数的返回值就是这个跟着的内容或者数据;

(3)、函数的四种形式:

    1、没有参数,没有return;

            通常在于封装一段过程;

    2、没有参数,有return;

            通常用于内部封装引用其他函数(闭包,回调);

    3、有参数,没有return;

            通常用于执行操作的封装;

    4、有参数,有return;

            常见形式;

(4)、匿名函数

    匿名函数的name属性值为anonymous;

    函数仅用一次的情况,即用即废;

    eg:

        setTimeout(function(){

            console.log(this.name);

        },1000);

    tips:在1秒后在控制台打印出本函数的名称;

(5)、回调函数

    在一个函数当中,另一个函数作为参数传入该函数中,另一个的这个函数即为回调函数;

    eg:

        function atack(callback){

            return callback;

        }

    tips:在调用该函数时,指定callback是哪个函数;

        atack(func);

(6)、短路运算

    作用:防止传入函数的数据不足,造成无法运行;

    eg:

        function getResult(a,b,fn) {

            fn && fn();

        }(通常使用逻辑与的短路来决定是否执行回调函数;)

        function getResult_2(a,b){

            a || 0;

        }(通常用逻辑或的短路来防止实参不足的情况,强行赋值;)

(7)、自执行函数

    (function func2(){

    })()

    tips:在函数定义的结束最后写入一个(),该函数定义完成后直接被调用执行;

(8)、递归

    在函数执行的最后再一次的调用自身;

    tips:递归是一种非常耗资源的做法,通常为了简化运算,还会结合缓存进行;

    并且注意,递归必须要有结束判断条件(if),否则该函数被调用后就是死循环;

14、数据类型

(1)、简单数据类型

    string、number、boolean

(2)、复杂数据类型

    String、Number、Boolean、Array、Math、Date、Obeject、function、RegExp(正则表达式)

(3)、空数据类型

    * Null  ---→Null的数据类型会返回一个Object

    * undifined

    tips:用typeof可以进行判断数据类型;

    tips:定义的简单数据类型变量,其数据保存在变量中;

        而复杂数据类型,其变量保存的是数据所在的内存地址;

15、内置对象

Array、Date、Math、String;

16、(Math)数学对象

向上取整        Math.ceil(number);

向下取整        Math.floor(number);

四舍五入        Math.round(number);

求多个数字之间的最大值    Math.max();

求多个数字之间的最小值    Math.min();

求x的y次幂      Math.pow(x,y);

求正弦值            Math.sin(x);

    example:

        求一个角度的正弦值,要求x必须是一个额弧度值

        角度和弧度的转换公式:

            弧度 = 角度 * 2 * Math.PI / 360;

        Math.sin(30*2*Math.PI/360)

Math.abs(x);    得到一个数字的绝对值

17、(Array)数组对象

(1)、arr1.concat(arr2);

        数组拼接,结果为将arr2拼接到arr1的最后;

(2)、arr.join();

        数组字符串输出,括号内可以指定元素连接的符号;

        eg:

            arr=["a","b","c","d"];

            console.log(arr.join("|"));    (结果为"a|b|c|d")

(3)、arr.pop();

        切除数组的最后一个元素,返回值为该元素;

(4)、arr.slice(start,end)

        获取,获取数组的指定片段,start必须有,如果参数为负数则从末尾开始选取;

        返回值为该片段组成的,一个新的数组;

(5)、arr.push

        添加,用于向数组的末尾添加新的元素,参数可以是多个;

        返回值为数组的新长度;

(6)、arr.splice

        1、用于向数组中指定的索引添加元素;

            arr.splice(2, 0, "William","asdfasdf");

                在第2个元素开始,删除的元素个数(可以为0,为0到结尾),

                加入元素为"William"、"asdfasdf";

        2、用于替换数组中的元素;

            arr.splice(2,1,"William");         

        3、用于删除数组中的元素;

            arr.splice(2,2);

(7)、arr.indexOf(element);

        查找,在数组中查找element,返回值为索引,如果没有该元素返回-1;

(8)、arr.sort(function);

        排序,function为一个函数;

            eg:

                function sortNumber(a,b){

                    return a-b;

                }

                arr.sort(sortNumber);(从小到大排序)

    tips:如果a-b改成b-a,那么执行的操作为从大到小;

    tips:字符串对象(String)的方法与Array的方法类似;

18、(Date)日期对象

date.getTime()

date.getMilliseconds()

date.getSeconds()

date.getMinutes()

date.getHours()

date.getDay()

date.getDate()

date.getMonth()

date.getFullYear()

tips:很多,查文档

19、(String)对象

charAt(index)

str[index]          获取字符串指定位置的字符

concat()        拼接字符串

---------------------------

slice(start,end)/

substring(start,end)    截取从start开始,end结束的字符,

                返回一个新的字符串,若start为负数,那么从最后一个字符开始;

substr(start,length)    截取从start开始,length长度的字符,得到一个新的的字符串

---------------------------

indexOf(char)      获取指定字符第一次在字符串中的位置

lastIndexOf(char)  获取指定字符最后一次出现在字符串中的位置

trim()      去除字符串前后的空白

---------------------------

toUpperCase()

toLocaleUpperCase()    转换为大写

toLowerCase()

toLocaleLowerCawse()    转换为小写

---------------------------

replace()      替换字符

split()        分割字符串为数组

20、自定义对象

对象:无序属性的集合;

    特征:属性(key);

    行为:方法(value);

js是基于对象的弱类型语言;

继承:基于类,子类可以从父类得到的特征;   

工厂模式:定义一个function构造函数,作为对象,要创建对象直接调用该构造函数,加new关键字;

构造函数:定义对象的函数,里面存有该对象拥有的基本属性和方法;

    命名首字母大写,this会自动指代当前对象;

访问对象属性:

    obj[key];

    obj.key;

遍历对象:

    for(key in obj){

        key        为属性名;

        obj[key]    为属性值(value);

    }

21、JSON

{

  "name" : "李狗蛋",

  "age" : 18,

  "color" : "yellow"

}

1、  所有的属性名,必须使用双引号包起来;

2、  字面量侧重的描述对象,JSON侧重于数据传输;

3、  JSON不支持undefined;

4、  JSON不是对象,从服务器发来的json一般是字符串,

通过JSON.parse(jsonDate.json)可以将其转换成js对象;

22、JS解析

(1)、作用域

全局作用域:整个代码所有地方都可以调用;

局部作用域:在函数内部声明的变量,只可以在函数内部使用;

(2)、变量提升和函数提升

预解析:在解析的时候,var和function都会被提升到代码的最顶端;

    但是赋值操作不会被提升,定义和函数才会被提升;

    if里面的变量定义也会被提升,但是赋值操作不会;

23、其他细节(tips)

(1)、元素由对象组成的数组进行排序

    eg:

        var data = [

            {title: "老司机", count: 20},

            {title: "诗人", count: 5},

            {title: "歌手", count: 10},

            {title: "隔壁老王", count: 30},

            {title: "水手", count: 7},

            {title: "葫芦娃", count: 6},

        ];

            //该数组的元素都为对象。我们需求为根据count的值给数组重新排序。

            //解决方案:使用sort方法,对传入的函数做手脚。

        function sortArr(a,b){

            return a.count > b.count; 

        }

        data.sort(sortArr);

            //原本的a和b的比较方法变成a.count和b.count;

            //原本的比较方法可以参见17,数组对象

            //至此,data将以count值从小到大排列。

    tips:Array对象的sort方法传入的为比较函数,比较函数里return排序比较的方法;

        原始的sort方法传入的函数内部return的值为a>b,

        通过修改sort传入的函数,可以实现对元素为对象的数组的排序!


  原文链接(http://www.cnblogs.com/wzhiq896/p/6783296.html) 作者:wangwen896 整理 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,145评论 0 13
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,783评论 0 38
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,231评论 0 4
  • 在犹豫了很久要不要写这个最纠结的话题,没想到每天都在发生着,都在提醒着自己要改变。 小时候,我从不质疑爸妈的决定...
    曾曾的麻麻阅读 191评论 0 0
  • 【0426读书感悟】 【书名】《为何爱会伤人》 【作者】 武志红 【金句】 001 我们会认为是爱令自己恐惧,而...
    小米大圈阅读 375评论 0 1