interview experience

[] == ![];
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
posted on 2015-03-10 13:13  跳雀  阅读(217)  评论(0编辑  收藏  举报