[英]JS - set a global variable
我想通過set函數設置全局變量,但是它總是將其設置為undefined
值:
var name;
var setName = function(name){
this.name = name;
}
在這種情況下,請不要使用this
。 (它可以工作,但不一定。為什么?請閱讀此 )
只需使用:
var name;
var setName = function (aname) {
name = aname;
}
還要確保此代碼不在另一個作用域(函數)內:
function foo() {
// ...
var name;
var setName = function (aname) {
name = aname;
}
// ...
}
在這種情況下,名稱將不是全局名稱,您必須省略其聲明以使其成為全局名稱:
function foo() {
// ...
var setName = function (aname) {
name = aname; // not it is global, if not defined in the visible scope
}
// ...
}
但這是一個壞習慣,因此請避免污染全局名稱空間 。 在以下情況下,將在全局名稱空間中考慮變量:
var
( name = ...
,並且沒有其他可見的局部變量,稱為name
window
上設置(例如window.name = ...
) function(val){
name = val
.......................
首先,window.name是保留屬性,您不應使用它。
其次,為所有全局JavaScript命名空間是一個好主意,以避免出現此類問題或與第三方庫沖突。
這是一個工作示例:
window.MyNamespace = {};
MyNamespace.name = '';
MyNamespace.setName = function(value) {
MyNamespace.name = value;
};
MyNamespace.setName('hello');
MyNamespace.name; // "hello"
根據您對此的評論,此代碼將起作用:
(function(){
app = {};
app.myPerson = (function(){
var name;
var setName = function(value) {
name = value;
};
setName('Charlie');
console.log(name); // Charlie
})();
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.