[翻译]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

相关文章
相关标签/搜索