如何将JavaScript函数中的变量作用域改写为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计865个文字,预计阅读时间需要4分钟。
JavaScript函数在查找变量时,从自身定义开始,向外查找。如果内部函数定义了与外部函数重名的变量,内部函数的变量将屏蔽外部函数的变量。
gistfile1.txt/* JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。 如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。 JavaScript语言特性1: 变量提升 JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部: 'use strict'; function foo() { var x = 'Hello, ' + y; alert(x); var y = 'Bob'; } foo(); 虽然是strict模式,但语句var x = 'Hello, ' + y;并不报错,原因是变量y在稍后申明了。但是alert显示Hello, undefined,说明变量y的值为undefined。这正是因为JavaScript引擎自动提升了变量y的声明,但不会提升变量y的赋值。 对于上述foo()函数,JavaScript引擎看到的代码相当于: function foo() { var y; // 提升变量y的申明 var x = 'Hello, ' + y; alert(x); y = 'Bob'; } 由于JavaScript的这一怪异的“特性”,我们在函数内部定义变量时,请严格遵守“在函数内部首先申明所有变量”这一规则。
本文共计865个文字,预计阅读时间需要4分钟。
JavaScript函数在查找变量时,从自身定义开始,向外查找。如果内部函数定义了与外部函数重名的变量,内部函数的变量将屏蔽外部函数的变量。
gistfile1.txt/* JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。 如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。 JavaScript语言特性1: 变量提升 JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部: 'use strict'; function foo() { var x = 'Hello, ' + y; alert(x); var y = 'Bob'; } foo(); 虽然是strict模式,但语句var x = 'Hello, ' + y;并不报错,原因是变量y在稍后申明了。但是alert显示Hello, undefined,说明变量y的值为undefined。这正是因为JavaScript引擎自动提升了变量y的声明,但不会提升变量y的赋值。 对于上述foo()函数,JavaScript引擎看到的代码相当于: function foo() { var y; // 提升变量y的申明 var x = 'Hello, ' + y; alert(x); y = 'Bob'; } 由于JavaScript的这一怪异的“特性”,我们在函数内部定义变量时,请严格遵守“在函数内部首先申明所有变量”这一规则。

