[] == ![];
true
|
[] |
== |
!Boolean([]); |
逻辑运算需进行数据类型转换 |
|
[] |
== |
!true |
0 NaN '' null undefined 在boolean中会变成false 其他为true |
|
[] |
== |
false; |
|
|
[] |
== |
0; |
如果其中一项为bool值,另外一项不是,则将其转换成数字 |
|
toPrimitive([]) |
== |
0; |
如果一项为对象,另一项为数字或字符串,则尝试将对象转换成primitiveValue原始值 |
|
[].valueOf() |
== |
0; |
首先尝试调用 valueOf 得到自身 仍然是对象类型 |
|
[] |
== |
0; |
|
|
[].toString() |
== |
0; |
再尝试调用 toString |
|
'' |
== |
0; |
Array.toString返回一个字符串,使用逗号连接数组中所有元素 |
|
0 |
== |
0 |
字符串和数值进行比较时,将字符串转换成数值 |
|
0 |
=== |
0 |
两边数据类型一致时,执行严格等运算 |
|
|
true |
|
得到结果true |
var a = function( k ) { return false; };
a() && [] == ![];
false
var k = true;
var a = function( k ){
var k = k && true;
return k;
};
a() && [] == ![];
undefined
var k = true;
var a = function( k ){
var k = k && true;
return k;
};
a() && [] == ![];
a=function(){return k};
var arr = [ 1, 2 ];
arr.b = "123";
arr.toString();
'1,2'
var o = {
a : 2,
b : function(){
this.a = 3;
(function(){
alert( this.a ); // 输出==>
this.a = 4;
})();
alert( this.a ); // 输出==>
return { d : o.a + 3 };
}
};
o.b();
o.b.d;
alert undefined,
alert 3,
o.b.d undefined
var i = 1, j = m = 0;
function a ( k ){
return k = k + 1;
}
j = a( i );
function a ( k ){
return k = k + 3;
}
m = a ( i );
j
m
j 4
m 4
alert( typeof a);
function a(){
alert( "a.function" );
}
var a = "a.string";
alert( a );
alert function
alert a.string
var o = {
a : function(){
alert ( this.c );
},
c : " Hunteron "
};
( f = o.a )();
alert undefined