JavaScript读书笔记(3)-操作符、语句和函数

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;

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。