[翻譯]Defining and updating JavaScript variables in different scopes

原文地址(翻譯練手)javascript

2017年12月14日java

Defining and updating JavaScript variables in different scopes

昨天,咱們學習了關於JavaScript做用域。今天,咱們來學習如何去在不一樣類型的做用域中更新變量。bash

用前綴var來定義一個新的變量。省略var會更新一個存在的變量的值。函數

關於這方面有兩條建議:post

  1. 若是一個變量已經被定義在當前做用域,用var再次聲明它會拋出錯誤。
  2. 若是一個變量沒有在當前做用域定義,省略var會創造新的變量(就算如此,建議你仍是使用var定義。)

你能夠在函數裏面定義一個和全局做用域或者詞法做用域中同名的變量,也不會對那個變量形成影響。學習

var sandwich = 'tuna';

var logSandwich = function () {
	// logs "turkey"
	// Does NOT update the global `sandwich` variable
	var sandwich = 'turkey';
	console.log(sandwich);

};
logSandwich();

// logs "tuna"
console.log(sandwich);
複製代碼

若是你省略了開頭的var,你能夠在內部函數內部修改全局做用域或者詞法做用域中的那個變量。ui

var sandwich = 'tuna';

// logs "tuna"
console.log(sandwich);

var logSandwich = function () {
	// logs "tuna"
	console.log(sandwich);

	// Updates `sandwich` in the global scope
	sandwich = 'turkey';

	// logs "turkey"
	console.log(sandwich);

};
logSandwich();

// logs "turkey"
console.log(sandwich);
複製代碼

明天,咱們會學不在全局做用域中保存變量(and爲何你要這麼作)。spa

相關文章
相關標籤/搜索