We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过 new 操作符后跟要创建的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象。
new
和 Java 中的 java.lang.object 对象一样,Object 类型是所有它的实例的基础。亦即 Object 类型所具有的任何属性和方法也同样存在于更具体的对象中。
Object 的每个实例都具有下列属性:
ECMAScirpt 中的所有数值都以IEEE-754 64 位格式存储,但位操作符并不直接操作 64 位值。而是先将 64 位的值转换成 32 位的整数,然后执行操作,最后将结果转换回64位。对于开发人员来说,由于 64 位存储格式是透明的,因此整个过程就像是只存在 32 位的整数一样。
对于有符号的整数来说,32 位中的前 31 位用于表示数值。第 32 位表示数值符号。负数同样以二进制码存储,但使用二进制补码。
位操作符有如下几种
~
&
|
^
<<
>>
<<<
>>>
在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值,此时,它遵循下列规则:
不能在逻辑与操作中使用未定义的值。
var found = true; var result = (found && someUndefinedVariable);//这里会发生错误 alert (result); //这一行不会执行
var found = false; var result = (found && someUndefinedVariable)//不会发生错误 alert (result); // 执行("false")
操作规则如下:
我们可以使用逻辑或的短路行为来避免为变量赋 null 或者 undefined 值,例如
var myObject = preferredObject || backupObject;
在这个例子中,myObject 将被赋予等号后面两个值中的一个。变量 preferredObject 中包含优先赋给变量 myObject 的值, 变量 backupObject 负责在 preferredObject 中不包含有效值情况下提供后备值。
在处理特殊值的情况下,乘法操作符遵循下列特殊的规则:
除法的特殊计算规则如下:
如果两个操作符都是数值,则执行常规的加法计算,然后根据下列规则返回结果:
加法的运算规则如下:
关系操作符运算规则如下:
注意在进行字符串比较时,实际比较的是两个字符串中对应位置的每个字符的字符编码值。经过一番比较之后,再返回一个布尔值。记住大写字母的编码值全部小于小写字母的字符编码。
var result = "Brick" < "alphabet"; //true var result = "Brick".toLowerCase() < "alphabet".toLowerCase(); //false var result = "23" < "3"; //true var result = "23" < 3://false var reslut = "a" < 3; //false "a"被转换为 NaN var result = NaN < 3; //false var result = NaN >= 3; //false
这两个操作符都会先转换操作数(通常称为强制转型),然后再比较它们的相等性。
在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:
如果有一个操作数是布尔值,则在比较相等性先将其转换为数值——false 为 0, true 为 1;
如果一个操作数是字符串,另一个操作数是数值,在比较相等性先将字符串转换为数值;
若一个操作数是对象,另一个不是,则调用 valueOf() 用得到的基本类型值按照前面的规则进行比较。这两个操作符在进行比较时要遵循下列 规则:
至于全等和不全等,相对于相等和不相等的区别就是未经类型转换判断相等与否
null == undefined //true null === undefined //false
由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,推荐使用全等和不全等操作符。
使用逗号操作符可以在一条语句中执行多个操作,初次之外也可以用于赋值。逗号操作符总会返回表达式中的最后一项。
for-in 语句是一种精确的迭代语句,可以用来枚举对象的属性。
for (property in expression) statement
ECMAScript 对象的属性没有顺序。因此,通过 for-in 循环输出的属性名的顺序是不可预测的。具体来讲,所有属性都会被返回一次,但返回的先后次序可能会因浏览器而异。若表示要迭代的对象的变量值为 null 或者 undefined ,for-in 语句会抛出错误。ECMAScript5 更正此行为,对于此种情况不抛出错误而是不再执行循环体。所以建议使用 for-in 循环前,先检测确认对象是不是 null 或者 undefined。
break 和 continue 语句运行在循环中用于精确的控制代码的执行。 其中, break 语句会立即退出循环,强制继续执行循环后面的语句。而 continue 语句虽然也是立即退出循环,但退出循环后从循环的顶部继续执行。
switch 语句在比较值时,使用全等操作符,不会产生类型转换。
函数会在执行 return 语句之后停止并立即退出。return 语句也不可以不带有任何返回值,在这种情况下,函数在停止执行后将返回 underfined 值。这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下。
ECMAScript 不介意传进函数的参数是多少个,也不在乎传进来的参数是什么数据类型。 ECMAScript 中的参数在内部时用一个数组来表示的额。函数接收的始终是这个数组,而不关心数组中包含哪些参数(如果有参数的额话)。实际上,函数体内通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。通过访问 arguments 对象的 length 属性可以获知有多少个参数传递给了函数。没有传递至的命令参数将自动被赋予 undefined 值。 ECMAScript 中的所有参数传递的都是值,不可能通过引用传递参数。
如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
object
ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过
new
操作符后跟要创建的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象。和 Java 中的 java.lang.object 对象一样,Object 类型是所有它的实例的基础。亦即 Object 类型所具有的任何属性和方法也同样存在于更具体的对象中。
Object 的每个实例都具有下列属性:
位操作符
ECMAScirpt 中的所有数值都以IEEE-754 64 位格式存储,但位操作符并不直接操作 64 位值。而是先将 64 位的值转换成 32 位的整数,然后执行操作,最后将结果转换回64位。对于开发人员来说,由于 64 位存储格式是透明的,因此整个过程就像是只存在 32 位的整数一样。
对于有符号的整数来说,32 位中的前 31 位用于表示数值。第 32 位表示数值符号。负数同样以二进制码存储,但使用二进制补码。
位操作符有如下几种
~
&
|
^
<<
>>
<<<
>>>
布尔操作符
逻辑与
在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值,此时,它遵循下列规则:
不能在逻辑与操作中使用未定义的值。
逻辑或
操作规则如下:
我们可以使用逻辑或的短路行为来避免为变量赋 null 或者 undefined 值,例如
在这个例子中,myObject 将被赋予等号后面两个值中的一个。变量 preferredObject 中包含优先赋给变量 myObject 的值, 变量 backupObject 负责在 preferredObject 中不包含有效值情况下提供后备值。
乘性操作符
乘法
在处理特殊值的情况下,乘法操作符遵循下列特殊的规则:
除法
除法的特殊计算规则如下:
加性操作符
加法
如果两个操作符都是数值,则执行常规的加法计算,然后根据下列规则返回结果:
如果有一个操作数是字符,则按照如下规则进行运算:
减法
加法的运算规则如下:
关系操作符
关系操作符运算规则如下:
注意在进行字符串比较时,实际比较的是两个字符串中对应位置的每个字符的字符编码值。经过一番比较之后,再返回一个布尔值。记住大写字母的编码值全部小于小写字母的字符编码。
相等操作符
相等操作符
这两个操作符都会先转换操作数(通常称为强制转型),然后再比较它们的相等性。
在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:
如果有一个操作数是布尔值,则在比较相等性先将其转换为数值——false 为 0, true 为 1;
如果一个操作数是字符串,另一个操作数是数值,在比较相等性先将字符串转换为数值;
若一个操作数是对象,另一个不是,则调用 valueOf() 用得到的基本类型值按照前面的规则进行比较。这两个操作符在进行比较时要遵循下列
规则:
至于全等和不全等,相对于相等和不相等的区别就是未经类型转换判断相等与否
由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,推荐使用全等和不全等操作符。
逗号操作符
使用逗号操作符可以在一条语句中执行多个操作,初次之外也可以用于赋值。逗号操作符总会返回表达式中的最后一项。
for-in 语句
for-in 语句是一种精确的迭代语句,可以用来枚举对象的属性。
ECMAScript 对象的属性没有顺序。因此,通过 for-in 循环输出的属性名的顺序是不可预测的。具体来讲,所有属性都会被返回一次,但返回的先后次序可能会因浏览器而异。若表示要迭代的对象的变量值为 null 或者 undefined ,for-in 语句会抛出错误。ECMAScript5 更正此行为,对于此种情况不抛出错误而是不再执行循环体。所以建议使用 for-in 循环前,先检测确认对象是不是 null 或者 undefined。
break 和 continue
break 和 continue 语句运行在循环中用于精确的控制代码的执行。 其中, break 语句会立即退出循环,强制继续执行循环后面的语句。而 continue 语句虽然也是立即退出循环,但退出循环后从循环的顶部继续执行。
switch 语句
switch 语句在比较值时,使用全等操作符,不会产生类型转换。
函数
函数会在执行 return 语句之后停止并立即退出。return 语句也不可以不带有任何返回值,在这种情况下,函数在停止执行后将返回 underfined 值。这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下。
理解参数
ECMAScript 不介意传进函数的参数是多少个,也不在乎传进来的参数是什么数据类型。
ECMAScript 中的参数在内部时用一个数组来表示的额。函数接收的始终是这个数组,而不关心数组中包含哪些参数(如果有参数的额话)。实际上,函数体内通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。通过访问 arguments 对象的 length 属性可以获知有多少个参数传递给了函数。没有传递至的命令参数将自动被赋予 undefined 值。 ECMAScript 中的所有参数传递的都是值,不可能通过引用传递参数。
没有重载
如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。
小结
The text was updated successfully, but these errors were encountered: