//?挑戰一
var?x?=?1;
//單獨聲明的時候,f的類型是function,作為if判斷的時候,未得到聲明,所以是undefined
if?(!!function?f()?{
????????})?{
????x?+=?typeof?f;
}
console.log(x);?????//?"1undefined"
//?挑戰二
(function?f(f)?{
????console.log(typeof?f());????//?"number"
})(function?()?{
????return?1;
});
//?挑戰三
console.log(typeof?2?*?3);????//?NaN,對于運算結果不能轉換成數字的,將返回?NaN
console.log(typeof?2?+?3);????//?"number3",數字字符串之前存在數字中的正負號(+/-)時,會被轉換成數字
//?挑戰四
var?a?=?0,?b?=?0;
console.log(a++?+?b);?????//?0?一元運算符++優先級高于+
console.log(a);?????????//?1
console.log(b);?????????//?0
//?挑戰五
var?a,?b,?c;
a?=?b?==?c;
console.log(a);?????//?false
//?挑戰六
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))))))這樣注釋對嗎?第二題和第六題如何解釋?
javascript表達式和運算符的問題
fancyL
2018-01-25 15:46:55