簡體   English   中英

為什么我的JavaScript中的自制isset函數不能完全正常工作?

[英]Why doesn't my homemade isset function in javascript completely work?

在試圖說明全局/局部變量作用域的書中,它使用以下示例來傳達這一概念:

test();

if (isset(bar)){ 

    alert('bar must be global!');

}else{

    alert('bar must be local!');

}

function test(){

   var foo = 3;
   bar = 5;

}


function isset(varname){

    return typeof varname != 'undefined';

}

現在,if返回警報'bar必須是global。',這很有意義,因為傳遞給isset() bar的變量在這種情況下是global。 但是,為什么if語句不返回alert('foo必須是本地的'); 當您通過時,可以說在isset函數中傳遞foo時間。

在函數test()的任何地方都沒有聲明“ bar”。 然后,JavaScript假定它是全局變量。

為了確保您不會犯此類錯誤,我建議您使用:

"use strict";

將該行放在文件的開頭。 它將防止出現很多錯誤,如下所示:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode

它將阻止未聲明的變量充當全局變量

由於您尚未使用var關鍵字,因此該變量是在全局范圍內定義的,並且在執行測試功能后仍然存在。 在這里進行了更全面的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM