1、 操作符
(1) 一元操作符
前置递增和递减操作符,变量的值都是在语句被求值以前改变的;后置相反
(2) 位操作符
在ECMAScript中,对数值进行位操作时,会发生以下转换过程:64位的数值被转换为32位数值,然后执行位操作,最后再将32位的结果转换回64位数值;
右移分为有符号右移(>>)和无符号右移(>>>)
(3) 布尔操作符-(!)(&&)(||)
(4) 全等操作符(===)只在两个操作数未经转换就相等的情况下返回true;
2、 语句
(1) for-in语句是精准的迭代语句,用来枚举对象的属性;若对象为null或undefined,不执行循环体,使用之前,先检测该对象的值不是null或undefined;
(2) lable语句-在代码中添加标签,以便将来使用,加标签的语句一般都要与for语句等循环语句配合使用;即与break和continue语句配合使用,指向代码中特定的位置;
(3) with语句,将代码的作用域设置到一个特性的对象中,主要是为了简化多次编写同一个对象的工作;不建议使用;
3、 函数
(1) ECMAScript中的函数在定义时不必指定是否返回值;但可以用return返回值,return之后的代码永远不会执行;
Return语句不带任何返回值时,函数在停止执行后返回undefined;
(2) 严格模式对函数的限制:
不能把函数名和参数名命名为eval或arguments;不能出现两个命名参数同名的情况;
(3) 参数
ECMAScript函数不介意传递进来少个参数,也在乎传递进来参数是什么数据类型,ECMAScript中的参数在内部是用一个数组来表示的;在函数体内可以通过arguments对象来访问参数数组;
对于ECMAScript函数来说-命名参数只提供便利,但不是必须的;
Arguments的值永远与对应命名参数的值保持同步,Arguments对象中的值会自动反映到对应的命名参数;但修改命名参数不会改变arguments中对应的值;因为他们的内存空间是独立的;
如果只传入了一个参数,那么为arguments[1]设置的值,是不会反映到命名参数中,arguments对象的长度由传入的参数个数决定,不是由定义函数时的命名参数的个数决定的;
没有传递值的命名参数将自动被赋予undefined值;
严格模式对arguments的限制:Arguments的值与对应命名参数的值不保持同步;重写arguments的值会导致语法错误;
ECMAScript中所有参数传递的都是值,不可能通过引用传递参数;
(4)重载
ECMAScript函数没有重载,若定义两个名字相同的函数,则该名字只属于后定义的函数;
总结:对于函数,终于明白了以前看不明白的很多地方,原来都是有规定的;这几天一直都是理论,并且都是书中的原话,其实更多的是去实践,去理解,努力ing;