JavaScript权威指南学习之第4章 表达式和运算符
来源:互联网 发布:上瘾网络剧第二季泰国 编辑:程序博客网 时间:2024/04/29 17:01
1、如果一个对象创建表达式不需要传入任何参数给话,那么这对空圆括号是可以省略掉的:
new Object() => new Object
new Date() => new Date
2、左值(lvalue)是指“表达式只能出现在赋值运算符的左侧”。在JavaScript中,变量、对象属性和数组元素均是左值。ECMAScript规范允许内置函数返回一个左值,但自定义的函数则不能返回左值。
3、加法操作符的行为表现为:
l 如果其中一个操作数是对象,则对象会遵循对象到原始值的转换规则转换为原始类值:日期对象通过toString()方法执行转换,其他对象则通过valueOf()方法执行转换(如果valueOf()方法返回一个原始值的话)。由于多数对象都不具备可用的valueOf()方法,因此它们会通过toString()方法来执行转换。
l 在进行了对象到原始值的转换后,如果其中一个操作数是字符串的话,另一个操作数也会转换为字符串,然后进行字符串连接。
l 否则,两个操作数都将转换为数字(或者NaN),然后进行加法操作。
4、一元加法(+)运算符把操作数转换为数字(或者NaN),并返回这个转换后的数字。
5、表达式++x并不总和x=x+1完全一样,”++”运算符从不进行字符串连接操作,它总是会将操作数转换为数字并增1.如果x是字符串”1”,++x的结果就是数字2,而x+1是字符串”11”。
6、位运算符要求它的操作数是整数,这些整数表示为32位整型而不是64位浮点型。必要时,位运算符首先将操作数转换为数字,并将数字强制表示为32位整型,这会忽略原格式中的小数部分和任何超过32位的二进制位。移位运算符要求右操作数在0~31之间。在将其操作数转换为无符号32位整数后,它们将舍弃第5位之后的二进制位,以便生成一个位数正确的数字。需要注意的是,位运算符会将NaN、Infinity和-Infinity都转换为0。
7、JavaScript严格相等(恒等===)判断实现步骤:
8、JavaScript相等(==)判断实现步骤:
9、比较运算符的操作数可能是任意类型。然后只有数字和字符串才能真正执行比较操作。因此那些不是数字和字符串的操作数都将进行类型转换,规则如下:
- 如果操作数为对象,那么这个对象将依照3.8.3结尾处所描述的转换规则转换为原始值:如果valueOf()返回一个原始值,那么直接使用这个原始值。否则,使用toString()的转换结果进行比较曹祖。
- 在对象转换为原始值之后,如果两个操作数都是字符串,那么将依照字母表的顺序对两个字符串进行比较,这里提到的“字母表顺序”是指组成这个字符串的16位Unicode字符的索引顺序。
- 在对象转换为原始值之后,如果至少有一个操作数不是字符串,那么两个操作数都将转换为数字进行数值比较。0和-0是相等的。Infinity比其他任何数字都大(除了Infinity本身),-Infinity比其他任何数字都小(除了它自身)。如果其中一个操作数是(或转换后是)NaN,那么比较操作符总是返回false。
10、可以通过使用两次逻辑非运算来得到一个值的等价布尔值:!!x。
11、ECMAScript 3标准规定了任何解释器都不允许对eval()赋予别名。如果eval()函数通过别名调用的话,则会抛出一个EvalError异常。 ECMASCript 5是反对使用EvalError的,并且规范了eval()的行为。当直接使用非限定的“eval”名称来调用eval()函数时,通常称为“直接eval”(direct eval)。直接调用eval()时,它总是在调用它的上下文作用域内执行。其他的间接调用则使用全局对象作为其上下文作用域,并且无法读、写、定义局部变量和函数。
12、ECMAScript 5严格模式对eval()函数的行为施加了更多的限制,甚至对标识符eval的使用也施加了限制。当在严格模式下调用eval()时,或者eval()执行的代码段以“user strict”指令开始,这里的eval()是私有上下文环境中的局部eval。也就是说,在严格模式下,eval执行的代码段可以查询或更改局部变量,但不能在局部作用域中定义新的变量或函数。此外,严格模式将“eval”列为保留字,这让eval()更像一个运算符。不能用一个别名覆盖eval()函数。并且变量名、函数名、函数参数或者异常捕获的参数都不能取名为“eval”。
13、任意值在typeof运算后的返回值:
X
typeof x
undefined
“undefined”
null
“object”
true或false
“boolean”
任意数字或NaN
“number”
任意字符串
“string”
任意函数
“function”
任意内置对象(非函数)
“object”
任意宿主对象
由编译器各自是实现的字符串,但不是”undefined”、”boolean”、”number”或”string”
14、ECMAScript 3规范,对于所有内置可执行对象,typeof运算符一律返回”function”。ECMAScript 5规范则扩充至所有可执行对象,包括内置对象(native object)和宿主对象(host object),所有可执行对象进行typeof运算都将返回”function”。
- JavaScript权威指南学习之第4章 表达式和运算符
- JavaScript权威指南第04章 表达式和运算符
- JavaScript权威指南_15_第4章_表达式和运算符_4.1-原始表达式
- JavaScript权威指南_19_第4章_表达式和运算符_4.5-调用表达式
- JavaScript权威指南_22_第4章_表达式和运算符_4.8-算术表达式
- JavaScript权威指南_23_第4章_表达式和运算符_4.9-关系表达式
- JavaScript权威指南_24_第4章_表达式和运算符_4.10-逻辑表达式
- JavaScript权威指南_25_第4章_表达式和运算符_4.11-赋值表达式
- JavaScript权威指南_26_第4章_表达式和运算符_4.12-表达式计算
- JavaScript权威指南_14_第4章_表达式和运算符_概述
- JavaScript权威指南_16_第4章_表达式和运算符_4.2-对象和数组的初始化表达式
- JavaScript权威指南_21_第4章_表达式和运算符_4.7-运算符概述
- JavaScript权威指南_27_第4章_表达式和运算符_4.13-其他运算符
- JavaScript权威指南_18_第4章_表达式和运算符_4.4-属性访问表达式
- JavaScript权威指南_17_第4章_表达式和运算符_4.3-函数定义表达式
- JavaScript权威指南_20_第4章_表达式和运算符_4.6-对象创建表达式
- 【笔记】 《js权威指南》- 第4章 表达式和运算符
- 《javascript权威指南》读书笔记(2)—表达式和运算符
- JQuery的Ajax()向后台传参方式
- Git 操作标签
- 程序设计基石与实践系列之按值传递还是按引用
- 判断浮点数是否等于0
- WERTYU
- JavaScript权威指南学习之第4章 表达式和运算符
- 文章标题
- 静态代码块-非静态代码块-默认构造方法
- Git 使用GitHub
- LintCode | Easy | 翻转二叉树 | Invert Binary Tree
- Debug---Eclipse断点调试基础
- Git 自定义Git
- Ubuntu 15.04趟坑笔记
- Binary Tree Paths -- leetcode