标签:
第三章 基本概念
“undefined”——如果这个值为定义;
“boolean”——如果这个值是布尔值;
“string”——如果这个值是字符串;
“number”——如果这个值是数值;
“object”——如果这个值是对象或者null;
“function”——如果这个值是函数。
通过typeof操作符来区分函数和其他对象是有必有的。
数据类型 |
转换为true的值 |
转换为false的值 |
Boolean |
true |
False |
String |
任何非空字符串 |
“”(空字符串) |
Number |
任何非零数字值(包括无穷大) |
0和NaN |
Object |
任何对象 |
null |
Undefined |
n/a(不适用) |
undefined |
如果是Boolean值,true和false将分别被转换为1和0;
如果是数字值,知识简单的传入和返回;
如果是null值,返回0;
如果是undefined,返回NaN。
如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值(前导的零被忽略);
如果字符串中包含有效的浮点格式,如“1.1”,则将其转换为对应的浮点数值(前导的零被忽略);
如果字符串中包含有效的十六进制格式,例如“0xf”,则将其转换为相同大小的十进制整数值;
如果字符串是空的(不包含任何字符),则将其转换为0;
如果字符串中包含除上述格式之外的字符,则将其转换为NaN。
字面量 |
含义 |
\n |
换行 |
\t |
指标 |
\b |
退格 |
\r |
回车 |
\f |
进纸 |
\\ |
斜杠 |
\’ |
单引号(’),在用单引号表示的字符串中使用,例如:’He said,\’hey.\’ ’ |
\” |
双引号(“),在用双引号表示的字符串中使用,例如:”He said,\”hey.\” ” |
\xnn |
以十六进制代码nn表示一个字符(其中n为0~F)。例如,\x41表示”A” |
\unnn |
以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。 |
如果值有toString( )方法,则调用该方法(没有参数)并返回相应的结果;
如果值是null,则返回”null”;
如果值是undefined,则返回”undefined”。
Constructor:保存着用于创建当前对象的函数。
hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在,其中,属性名必须以字符串的形式指定,例如o.hasOwnProperty(“name”)。
isPrototypeOf(object):用于检查对象是否是传入对象的原型。
propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
toLoacleString( ):返回对象的字符串表示,该字符串与执行环境的地区对应。
toString( ):返回对象的字符串表示。
valueOf( ):返回对象的字符串、数值或布尔值表示。通常与toString( )方法的返回值相同。
在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作。字符串变量变成数值变量。
在应用于一个不包含有效数字字符的字符串时,将变量的值设为NaN,字符串变量变为数值变量。
在应用于布尔值false时,先将其转换为0再执行加减1的操作,布尔值变量变为数值变量。
在应用于布尔值true时,先将其转换为1再执行加减1的操作,布尔值变量变成数值变量。
在应用于浮点数值时,执行加减1的操作。
在应用于对象时,先调用对象的valueOf( )方法,以取得一个可供操作的值,然后对该值应用前述规则,如果结果是NaN,则再调用toString( )方法后应用前述规则。对象变量变成数值变量。
如果操作数是一个对象,返回false;
如果操作数是一个空字符串,返回true;
如果操作数是一个非空字符串,返回false;
如果操作数是数值0,返回true;
如果操作数是任意非0数值(包括Infinity),返回false;
如果操作数是null,返回true;
如果操作数是NaN,返回true;
如果操作数是undefined,返回true。
如果第一个操作数是对象,则返回第二个操作数;
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;
如果两个操作数都是对象,则返回第二个操作数;
如果有一个操作数是null,则返回null;
如果有一个操作数是NaN,则返回NaN;
如果有一个操作数是undefined,则返回undefined。
逻辑与是短路操作,即如果第一个操作数能够决定结果,则不会对第二个操作数求值。
如果第一个操作数是对象,则返回第一个操作数;
如果第一个操作数的求值结果是false,则返回第二个操作数;
如果两个操作数都是对象,则返回第一个操作数;
如果两个操作数都是null,则返回null;
如果两个操作数都是NaN,则返回NaN;
如果两个操作数都是undefined,则返回undefined。
逻辑或也是短路操作。可利用逻辑或的这一行为来避免为变量赋null或undefined值。
如果操作数都是数值,执行常规的乘法计算。如果乘积超过了ECMAScript数值的表示范围,则返回Infinity或-Infinity;
如果有一个操作数是NaN,则结果是NaN;
如果是Inifinity与0相乘,则结果是NaN;
如果是Inifinity与非0数值相乘,则结果是Infinity或-Infinity,取决于有符号操作数的符号;
如果有一个操作数不是数值,则在后台调用Number( )将其转换为数值,然后再应用上面的规则。
如果操作数都是数值,执行常规的除法计算,如果商超过了ECMAScript数值的表示范围,则返回Infinity或-Infinity;
如果有一个操作数是NaN,则结果是NaN;
如果是Infinity被Infinity除,则结果是NaN;
如果是零被领出,则结果是NaN;
如果是非零的有限数被零除,则结果是Infinity或-Infinity,取决于有符号操作数的符号;
如果是Infinity被任何非零数值除,则结果是Infinity或-Infinity,取决于有符号操作数的符号。
如果有一个操作数不是数值,则在后台调用Number( )将其转换为数值,然后再应用之前的规则。
如果操作数都是数值,执行常规的除法计算,返回除得的余数;
如果被除数是无穷大值而除数是有限大的数值,则结果返回NaN;
如果被除数是有限大的数值而除数是零,则结果是NaN;
如果是Infinity被Infinity除,则结果是NaN;
如果被除数是有限大的数值而除数是无穷大的数值,则结果是被除数;
如果被除数是零,则结果是零;
如果有一个操作数不是数值,则在后台调用Number( )将其转换为数值,再应用以上规则。
如果有一个操作数是NaN,则结果是NaN;
如果是Infinity加Infinity,则结果是Infinity;
如果是-Infinity 加-Infinity,则结果是-Infinity;
如果是Infinity加-Infinity,则结果是NaN;
如果是+0加+0,则结果是+0;
如果是-0加-0,则结果是-0;
如果是+0加-0,则结果是+0;
如果有一个操作数是字符串,则应用以下规则:
如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来。
如果有一个操作数是对象、数值或布尔值,则调用它们的toString( )方法取得相应的字符串值,然后再运用前面的关于字符串的规则。对于undefined和null,则分别调用String( )函数并取得字符串”undefined”和”null”。
如果两个操作符都是数值,则执行常规的算术减法操作并返回结果;
如果有一个操作数是NaN,则结果是NaN;
如果是Infinity减Infinity,则结果是NaN;
如果是-Infinity减-Infinity,则结果是NaN;
如果是Infinity减-Infinity,则结果是Infinity;
如果是-Infinity减Infinity,则结果是-Infinity;
如果是+0减+0,则结果是+0;
如果是+0减-0,则结果是-0;
如果是-0减-0,则结果是+0;
如果有一个操作数是字符串、布尔值、null或undefined,则先在后台调用Number( )函数将其转换为数值,然后再根据前面的规则执行减法计算。如果转换的结果是NaN,则减法的结果就是NaN;
如果有一个操作数是对象,则调用对象的valueOf( )方法以取得表示该对象的数值。如果得到的值是NaN,则减法的结果就是NaN。如果对象没有valueOf( )方法,则调用其toString( )方法并将得到的字符串转换为数值。
如果两个操作数都是数值,则执行数值比较。
如果两个操作数都是字符串,则比较两个字符串对应的字符编码值;
如果一个操作数是数值,则将另一个操作数转换为数值,然后执行数值比较;
如果一个操作数是对象,则调用这个对象的valueOf( )方法,用得到的结果按照前面的规则比较,若无valueOf( )方法,则用toString( )方法,同上。
如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。
注意:任何操作数与NaN进行关系比较,结果都是false。
转换不同的数据类型是,规则如下:
如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,true转换为1;
如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf( )方法,用得到的基本类型值按照前面的规则进行比较。
两个操作符在进行比较时则要遵循下列规则:
null和undefined是相等的。
要比较相等性之前,不能将null和undefined转换为其他任何值。
如果有一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true。即使两个操作数都是NaN,相等操作符也返回false。
如果两个操作数都是对象,则比较它们是不是同一个对象,如果都指向同一个对象,则相等操作符返回true,否则,返回false。
乘/赋值 (*=);
除/赋值 (/=);
模/赋值 (%=);
加/赋值 (+=);
减/赋值 (-=);
左移/赋值 (<<=);
有符号右移/赋值 (>>=);
无符号右移/赋值 (>>>=)。
for (property in expression) statement
在使用for-in循环之前,先检测确认该对象的值不是null或undefined。
Label : statement
加标签的语句一般都要与for语句等循环语句配合使用。
with (expression) statement
严格模式下,不允许使用with语句,否则将视为语法错误。大量使用with语句会导致性能下降,也会给调试代码造成困难,不建议在大型应用程序中使用。
不能把函数命名为eval或arguments;
不能把参数命名为eval或arguments;
不能出现两个命名参数同名的情况。
否则会导致语法错误,代码无法执行。
标签:
原文地址:http://www.cnblogs.com/rain-123/p/5222043.html