3 回答
TA贡献3593条经验 获得超0个赞
TA贡献6条经验 获得超0个赞
// 挑战二 var nums = [12,32,54,56,78,89]; for(var n in nums){ console.log(n); // 0,1,2,3,4,5 } // 挑战三 function showCase(value) { switch (value) { case 'A': console.log('Case A'); break; case 'B': console.log('Case B'); break; case undefined: console.log('undefined'); break; default: console.log('Do not know!'); } } showCase(new String('A')); // "Do not know!"
如何解释??
TA贡献124条经验 获得超28个赞
挑战六:
console.log(1 && 3); // 3 console.log(1 && "foo" || 0); // "foo" console.log(1 || "foo" && 0); // 1
“&&”运算:两边都为真,返回后者,如果为假,返回“假”,即:
console.log(3 && 1) //1 console.log(0 && 3) //0 console.log(3 && 0) //0
挑战七:
// 挑战七 var a=1; var b=(a=(2,4,6))+a++ console.log(b); // 12 b=(6)+a++ ==12
其中(a=(2,4,6))的(2,4,6)是逗号表达式,逗号表达式只返回最后一个逗号后面的操作数,这里是6,(3,2,1)则返回1,之后其实执行的是赋值,即a=6,再执行6+a,因为a被重新赋值,所以这里a也是6,即6+6,至于a++后面的自增,需要在执行6+6之后才运算,所以在这里其实是不起实际作用的,最后b是12,a是7
// 挑战八
if (!("a" in window)) { var a = 1; }
原理是因为“var”拥有“提前”特性,详情百度。
// 挑战九
三元表达式,“exp?true:false”如果表达式exp为真,就返回冒号之前,否则返回之后
// 挑战十
一个计算符嵌套,“负负得正”,结果加1
TA贡献6条经验 获得超0个赞
// 挑战六
console.log(1 && 3); // 3
console.log(1 && "foo" || 0); // "foo"
console.log(1 || "foo" && 0); // 1
// 挑战七
var a=1;
var b=(a=(2,4,6))+a++
console.log(b); // 12 b=(6)+a++ ==12
// 挑战八
if (!("a" in window)) {
var a = 1;
}
console.log(a); // undefined,因为!结果为false,所以不会执行赋值语句,alert(a) 返回 undefined
// 挑战九
var val = 'smtg';
console.log('Value is ' + (val === 'smtg') ? 'Something' : 'Nothing'); // "Something"
// 挑战十
console.log(1 + - + + + - + 1); // 2,1+(-(+(+(+(-(+1))))))
您看这样解释对吗?还有第二题和第六题如何解释??
添加回答
举报