複製代碼 代碼如下:<script type="text/javascript">
function doTest(s) {
document.writeln(s + " : " + eval(s) + "<br />");
}
doTest("null==undefined"); //1:
doTest('null==""'); //2:
doTest('null==0'); //3:
doTest('0==""'); //4:
doTest('false==0'); //5:
doTest('false==""'); //6:
doTest('true==0'); //7:
doTest('true==1'); //8:
doTest('true==-1'); //9:
doTest('false==null'); //10:
doTest(''); //11:
doTest('false==undefined'); //12:
doTest('-0===+0'); //13:
doTest('-0==+0'); //14:
doTest('-(-0)===0'); //15:
doTest('false===(!true)'); //16:
doTest('typeof(null)'); //17:
doTest('typeof(false)'); //18:
doTest('typeof(undefined)'); //19:
doTest('typeof(1)'); //20:
doTest('typeof(+1.1)'); //21:
</script>
怎麼樣?自己給自己打下分,總共22個題目,你對了多少個呢?
這些題目我也不知道應該去講解,只是想讓大家對自己做錯的題目進行更深一步的思考、挖掘。
下面我們來公布答案吧:
代碼 複製代碼 代碼如下:<script type="text/javascript">
function doTest(s) {
document.writeln(s + " : " + eval(s) + "<br />");
}
doTest("null==undefined"); //1:null==undefined : true
doTest('null==""'); //2: null=="" : false
doTest('null==0'); //3: null==0 : false
doTest('0==""'); //4: 0=="" : true
doTest('false==0'); //5:false==0 : true
doTest('false==""'); //6: false=="" : true
doTest('true==0'); //7:true==0 : false
doTest('true==1'); //8:true==1 : true
doTest('true==-1'); //9: true==-1 : false
doTest('false==null'); //10:false==null : false
doTest(''); //11: : undefined
doTest('false==undefined'); //12:false==undefined : false
doTest('-0===+0'); //13:-0===+0 : true
doTest('-0==+0'); //14:-0==+0 : true
doTest('-(-0)===0'); //15:-(-0)===0 : true
doTest('false===(!true)'); //16:false===(!true) : true
doTest('typeof(null)'); //17:typeof(null) : object
doTest('typeof(false)'); //18:typeof(false) : boolean
doTest('typeof(undefined)'); //19:typeof(undefined) : undefined
doTest('typeof(1)'); //20:typeof(1) : number
doTest('typeof(+1.1)'); //21:typeof(+1.1) : number
</script>
給大家留下一個問題:3||6&&9的運算結果是什嗎?
具體的分析可以看這裡:&&和||運算
內容如下:
一直以為 && 和 || 這兩個運算子只能在判斷運算式時使用,一般就是常在if語句使用。前段時間在公司的磨刀行動的考核題目中,完全做錯了。由於對這兩個運算子不是很理解,只是簡單的認為是一個判斷運算式。當時考試的題目:3||6&&9的運算結果是什嗎?我居然寫的是true!
今天在部落格園裡看到了對這兩個講解,認為很多人在這裡還是存在誤區的。所以也把他記了下來。
我們先不看答案,先來對&& 和 || 的理解。我記得在以前的電腦書上看到過這兩個運算子,他們的優先順序是:&&大於|| 。那&&又是怎麼運算的呢?
exp1&&exp2:如果執行exp1後返回true,則執行exp2並返回exp2的值;如果執行exp1後返回false,則整個運算式返回exp1的值,exp2不執行;
exp1 || exp2:如果執行exp1後返回true,則整個運算式返回exp1的值,exp2不執行;如果執行exp1後返回false,則執行exp2並返回exp2的值;
那下面我們來看答案吧:
3||6&&9:先運算&&,由於6和9都大於0,即都為true,所以結果為 9。運算式變為3||9。由於3和9 都為true,則返回3。所以答案就是3。
由上面我又延伸幾個問題:false==0,true==0,false==null,false==undefined,false==""他們的值 又是什麼呢?
在末尾我在給大家留個問題:&和&& 他們之間又有什麼區別呢?