1.任何类型的值转为boolean类型:
数据类型 转为true的值 转为false的值
string 任何非空字符串 空字符串
Number 任何非0数字值(包括无穷大) 0和NaN
Undefined 不适用 undefined
Object 任何对象 null
2.流控制语句对于传入的参数自动执行Boolean()函数
3.es会在整数超过21位时用e表示法显示,在浮点数小数点后带6个0以上时用e表示法表示
4.Infinity不是能够参与计算的数值 isFinite()可以判断一个数是不是无穷大/小
5.with(Number){
MIN_VALUE最小值
MAX_VALUE最大值
NEGATIVE_INFINITY负无穷
POSITIVE_INFINITY正无穷
}
6.NaN 不等于任何数,isNaN(),先尝试将参数转为数值,若不行则转为NaN返回true;
7.Number()传入:
数字,直接返回
boolean,true为1,false为0
null,0
undefined,NaN
字符串:
只包含数字,返回数字(忽略前导0)
只包含浮点数,返回浮点数
只包含16进制数,返回转为10进制的对应数值
空字符串,0
包含其他数字,NaN
对象,先调用valueOf()方法/若不行在调用toString方法,调用上述规则
parseInt():
只要第一个字符不是负号或数字字符,即返回NaN,忽略空格,忽略后续非数字字符的值
传入的第二个参数可以指定,解析的字符串是多少位数字
parseFloat
8.转为字符串:
toString():
不能用于null和undefined;
String():适用于所有类型数值,对于有toString方法的调用之,否则直接返回其字面量的字符串
9.自增自减操作符用于不同类型时遵循的规则:
先按照Number()的规则将不同类型值转为数字值(数字类型值不转换)或者NaN,再执行;
一元加减操作符用于不同类型值:
使用Number()的规则进行转换
位运算符...:
按照Number()的规则进行转换;
10.布尔操作符:
逻辑非应用于其他类型数值时:
先按照Boolean()方法的规则将其他类型值转为布尔类型,然后进行非操作
同时使用两个!!相当于模拟Boolean()函数
逻辑与用于其他类型数值时:
若1数为false,返回false否则
如果1数为对象,则返回2数
如果1数true,2数为对象返回2数
如果两数都是对象,返回2数
只要有一数为null返回null;
NaN NaN;
undefined undefined;
还有,短路大法,你懂的;
逻辑或用于其他类型数值时:
如果1数为对象,则返回1数
如果1数为false,返回2数
如果两数都是null,返回null
如果两数都是NaN,返回NaN
如果两数都是undefined,返回undefined
短路或
11.乘法操作符:
如果乘积超过了数值表示范围则返回Infinity或-Infinity
如果一个操作数是NaN,结果是NaN
Infinity与0乘,结果是NaN
Infinity与非0乘,结果是Infinity或-Infinity
Infinity与Infinity相乘结果是Infinity
如果有一个操作数不是数值类型,则调用Number()将其转为数值类型,再应用上述规则
除法操作符:
如果商超过了数值表示范围则返回Infinity或-Infinity
如果一个操作数是NaN,结果是NaN
Infinity被Infinity除结果是NaN
0被0除结果是NaN非0有限数被0除,结果是Infinity
Infinity被除了Infinity(以及-Infinity)的任何数除,结果为-或+Infinity
如果有一个操作数不是数值类型,则调用Number()将其转为数值类型,再应用上述规则
加法操作符:
如果一个操作符是NaN,则结果是NaN;
如果是两个Infinity则结果是Infinity
如果是两个-...则结果是-.....
如果是Infinity加-Infinity则结果是NaN
+0加+0结果+0
-..加-..结果-0
-0加+0结果+0
如果有一个是字符串则将另一个转为字符串将二者拼接
如果两个都是字符串,则将二者拼接
减法操作符:
如果一个操作数是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()转为数值
如果是对象则调用valueOf方法,toString方法
关系操作符:
两个数值,直接执行数值比较
两个字符串,比较其字符编码值大小
一个是数值,将另一个转为数值然后执行数值比较
如果一个操作数是对象,调用其valueOf,若无调用其toString方法,然后执行上述规则如果是布尔值,转为数值然后执行数值比较
相等与不等: 会将操作数转型后再比较
如果是布尔值,转为数值后比较
如果一个是字符串,另一个是数值,转为数值比较
如果一个是对象,另一个不是,调用对象的valueOf方法,用得到的基本类型值进行比较
null和undefined相等
如果两个操作数都是对象,则比较他们是不是指向一个对象
全等和不全等:
不强制转型
条件操作符:
...
赋值操作符:
复合赋值操作符:
*= /= %= += -= <<= >>== >>>=
12.语句
if语句:
最佳实践,始终使用代码块
do {}while();:
while:
for:
for(var name in names){}:
label:常用于多重循环中
with:将代码的作用于设置到一个特定的对象中:
with(expression){statement};
switch:可以使用任意数据类型,case的值可以是变量也可以是常量.故意去掉break;以执行多条语句时,最好加上注释
数据类型 转为true的值 转为false的值
string 任何非空字符串 空字符串
Number 任何非0数字值(包括无穷大) 0和NaN
Undefined 不适用 undefined
Object 任何对象 null
2.流控制语句对于传入的参数自动执行Boolean()函数
3.es会在整数超过21位时用e表示法显示,在浮点数小数点后带6个0以上时用e表示法表示
4.Infinity不是能够参与计算的数值 isFinite()可以判断一个数是不是无穷大/小
5.with(Number){
MIN_VALUE最小值
MAX_VALUE最大值
NEGATIVE_INFINITY负无穷
POSITIVE_INFINITY正无穷
}
6.NaN 不等于任何数,isNaN(),先尝试将参数转为数值,若不行则转为NaN返回true;
7.Number()传入:
数字,直接返回
boolean,true为1,false为0
null,0
undefined,NaN
字符串:
只包含数字,返回数字(忽略前导0)
只包含浮点数,返回浮点数
只包含16进制数,返回转为10进制的对应数值
空字符串,0
包含其他数字,NaN
对象,先调用valueOf()方法/若不行在调用toString方法,调用上述规则
parseInt():
只要第一个字符不是负号或数字字符,即返回NaN,忽略空格,忽略后续非数字字符的值
传入的第二个参数可以指定,解析的字符串是多少位数字
parseFloat
8.转为字符串:
toString():
不能用于null和undefined;
String():适用于所有类型数值,对于有toString方法的调用之,否则直接返回其字面量的字符串
9.自增自减操作符用于不同类型时遵循的规则:
先按照Number()的规则将不同类型值转为数字值(数字类型值不转换)或者NaN,再执行;
一元加减操作符用于不同类型值:
使用Number()的规则进行转换
位运算符...:
按照Number()的规则进行转换;
10.布尔操作符:
逻辑非应用于其他类型数值时:
先按照Boolean()方法的规则将其他类型值转为布尔类型,然后进行非操作
同时使用两个!!相当于模拟Boolean()函数
逻辑与用于其他类型数值时:
若1数为false,返回false否则
如果1数为对象,则返回2数
如果1数true,2数为对象返回2数
如果两数都是对象,返回2数
只要有一数为null返回null;
NaN NaN;
undefined undefined;
还有,短路大法,你懂的;
逻辑或用于其他类型数值时:
如果1数为对象,则返回1数
如果1数为false,返回2数
如果两数都是null,返回null
如果两数都是NaN,返回NaN
如果两数都是undefined,返回undefined
短路或
11.乘法操作符:
如果乘积超过了数值表示范围则返回Infinity或-Infinity
如果一个操作数是NaN,结果是NaN
Infinity与0乘,结果是NaN
Infinity与非0乘,结果是Infinity或-Infinity
Infinity与Infinity相乘结果是Infinity
如果有一个操作数不是数值类型,则调用Number()将其转为数值类型,再应用上述规则
除法操作符:
如果商超过了数值表示范围则返回Infinity或-Infinity
如果一个操作数是NaN,结果是NaN
Infinity被Infinity除结果是NaN
0被0除结果是NaN非0有限数被0除,结果是Infinity
Infinity被除了Infinity(以及-Infinity)的任何数除,结果为-或+Infinity
如果有一个操作数不是数值类型,则调用Number()将其转为数值类型,再应用上述规则
加法操作符:
如果一个操作符是NaN,则结果是NaN;
如果是两个Infinity则结果是Infinity
如果是两个-...则结果是-.....
如果是Infinity加-Infinity则结果是NaN
+0加+0结果+0
-..加-..结果-0
-0加+0结果+0
如果有一个是字符串则将另一个转为字符串将二者拼接
如果两个都是字符串,则将二者拼接
减法操作符:
如果一个操作数是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()转为数值
如果是对象则调用valueOf方法,toString方法
关系操作符:
两个数值,直接执行数值比较
两个字符串,比较其字符编码值大小
一个是数值,将另一个转为数值然后执行数值比较
如果一个操作数是对象,调用其valueOf,若无调用其toString方法,然后执行上述规则如果是布尔值,转为数值然后执行数值比较
相等与不等: 会将操作数转型后再比较
如果是布尔值,转为数值后比较
如果一个是字符串,另一个是数值,转为数值比较
如果一个是对象,另一个不是,调用对象的valueOf方法,用得到的基本类型值进行比较
null和undefined相等
如果两个操作数都是对象,则比较他们是不是指向一个对象
全等和不全等:
不强制转型
条件操作符:
...
赋值操作符:
复合赋值操作符:
*= /= %= += -= <<= >>== >>>=
12.语句
if语句:
最佳实践,始终使用代码块
do {}while();:
while:
for:
for(var name in names){}:
label:常用于多重循环中
with:将代码的作用于设置到一个特定的对象中:
with(expression){statement};
switch:可以使用任意数据类型,case的值可以是变量也可以是常量.故意去掉break;以执行多条语句时,最好加上注释