空變量為什么賦值為null

@拭目以待:首發(fā)于空變量為什么賦值為null

日常編碼中姥饰,經(jīng)常需要提前聲明一些空變量傻谁,如:

var _table;
// 當條件滿足時,獲取 class 為 table 的元素
if(true){
    _table = document.querySelector('.table');
}
// 當條件不滿足時列粪,獲取標簽為 table 且存在屬性 grid-manager的元素
else{
    _table = document.querySelector('table[grid-manager]');
}

通過上面的示例聲明的變量 _table 是個空值审磁, 在聲明但未執(zhí)行條件判斷語句時, 該變量會被解釋器自動賦值為 undefined 岂座,如下所示:

var _table;
console.log(_table);  // => undefined
// 與直接顯示聲明為undefined效果相同态蒂。
var _table2 = undefined;
console.log(_table2);  // => undefined
console.log(_table === _table2); // ==> true

但是我們通常在使用一些變量時,需要驗證這個變量是否已經(jīng)聲明掺逼,這對于程序的健壯性是很必要的吃媒。但是在執(zhí)行中,會存在一些問題吕喘,如下所示:

// 實際的應(yīng)用場景: 驗證指定變量是否未聲明赘那,如果未聲明則進行異常處理。
if(typeof age === 'undefined'){
    console.log('變量age 未聲明'); // =>變量age 未聲明
}
var _name;
if(typeof _name === 'undefined'){
    alert(_name); // 雖然_name已被聲明氯质,但是這里依然被執(zhí)行
}

出現(xiàn)這種情況募舟,主要是由于操作符 typeof 在檢測變量時,聲明但未初始化 與 未經(jīng)聲明的變量都會返回undefined闻察。

雖然這個結(jié)果從邏輯上存在一定的合理性拱礁,但是卻會影響我們的正常使用琢锋。

所以我們在聲明空變量時,需要對變量進行顯式聲明呢灶,即為其賦上空值 null 吴超, 如下所示:

var _name = null;
    if(typeof _name === 'undefined'){
    alert(_name); // 未進入, 因為該值已經(jīng)聲明 且 已初始化
}

@拭目以待

個人站點:www.lovejavascript.com
表格管理插件:gridmanager.lovejavascript.com && github地址
QQ交流群 (452781895):How To Make Love
微信公眾賬號:loveJavascript

《野生前端工程師》專輯中所有文章均為@拭目以待 原創(chuàng)鸯乃,轉(zhuǎn)載請注明出處鲸阻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缨睡,隨后出現(xiàn)的幾起案子鸟悴,更是在濱河造成了極大的恐慌,老刑警劉巖奖年,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件细诸,死亡現(xiàn)場離奇詭異,居然都是意外死亡陋守,警方通過查閱死者的電腦和手機震贵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗅义,“玉大人屏歹,你說我怎么就攤上這事≈耄” “怎么了蝙眶?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長褪那。 經(jīng)常有香客問我幽纷,道長,這世上最難降的妖魔是什么博敬? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任友浸,我火速辦了婚禮,結(jié)果婚禮上偏窝,老公的妹妹穿的比我還像新娘收恢。我一直安慰自己,他們只是感情好祭往,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布伦意。 她就那樣靜靜地躺著,像睡著了一般硼补。 火紅的嫁衣襯著肌膚如雪驮肉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天已骇,我揣著相機與錄音离钝,去河邊找鬼票编。 笑死,一個胖子當著我的面吹牛卵渴,可吹牛的內(nèi)容都是我干的慧域。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼浪读,長吁一口氣:“原來是場噩夢啊……” “哼吊趾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瑟啃,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揩尸,沒想到半個月后蛹屿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡岩榆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年错负,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勇边。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡犹撒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粒褒,到底是詐尸還是另有隱情识颊,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布奕坟,位于F島的核電站祥款,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏月杉。R本人自食惡果不足惜刃跛,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苛萎。 院中可真熱鬧桨昙,春花似錦、人聲如沸腌歉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽究履。三九已至滤否,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間最仑,已是汗流浹背藐俺。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工炊甲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欲芹。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓卿啡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親菱父。 傳聞我的和親對象是個殘疾皇子颈娜,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 當程序需要將值保存起來以備將來使用時,便將其賦值給一個變量浙宜,值的類型稱作數(shù)據(jù)類型官辽。 變量 JavaScript 的...
    劼哥stone閱讀 593評論 2 6
  • 前端07班 王語句JavaScript程序的執(zhí)行單位為行(line),也就是一行一行地執(zhí)行粟瞬。一般情況下同仆,每一行就是...
    ea203453e188閱讀 888評論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法裙品,內(nèi)部類的語法俗批,繼承相關(guān)的語法,異常的語法市怎,線程的語...
    子非魚_t_閱讀 31,644評論 18 399
  • 【一個手殘黨到手作達人的逆襲】 初識捕夢網(wǎng)實在電視勊晖:繼承者們,就覺得很好看区匠,你們都懂追劇自然更關(guān)注男女主角干像。與它...
    陽光在微笑閱讀 181評論 0 0
  • 坐享蝠筑,這個詞是李笑來老師發(fā)布在學習學習再學習公眾號上的,笑來老師之所以要使用坐享這個詞語揩懒,據(jù)他說目的是為了替代“打...
    奔跑的阿貢閱讀 684評論 4 1