![](/img/trans.png)
[英]Why my own “toString()” function doesn't work in my javascript?
[英]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.