3 回答
 
                    
                    TA贡献3593条经验 获得超1个赞
 
                    
                    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))))))
您看这样解释对吗?还有第二题和第六题如何解释??
添加回答
举报
