javascript函数中的词法作用域
Lexical scope in javascript function
以下代码片段:
a = 0;
function f1() {
a = 1;
f2();
}
function f2() {
return a;
}
f1();
返回未定义。
从我的理解,函数访问变量时,他们被定义,并访问这些变量的值时,他们被执行。所以,在这种情况下,我猜f2可以访问全局变量'a',并读取它的修改值(1)。那么为什么它是未定义的?
您没有返回f1
函数中调用f2()
或其他任何内容的结果,因此f1
正确返回undefined
。
也许你想要的是:
a = 0; // variable a defined in the global scope and set to 0
function f1() {
a = 1; // since a is declared without var,
// sets the value of global variable a to 1
return f2();
}
function f2() {
return a; // since a was not declared with var,
// return a from the global scope
}
alert(f1()); // displays the computed value 1 of a
问候。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- JavaScript/循环混淆中的动态作用域与词法作用域
- 函数表达式的词法作用域
- javascript是否实现词法作用域
- javascript函数中的词法作用域,为什么代码返回undefined ?
- javascript函数中的词法作用域
- JavaScript词法作用域和变量的生命周期
- 词法作用域变量在getJSON调用中被覆盖后仍保留其值
- Typescript -词法作用域的问题=>这一点
- 我是否应该保留等于$q.defer()的变量,使其具有词法作用域?
- 全球.Eval不能访问词法作用域中的变量.行为是否符合ECMAScript标准
- 词法作用域概念在JavaScript中的确切含义是什么?
- 在chrome开发工具中调试带有词法作用域(闭包)的angularjs指令时的奇怪行为
- javascript中的词法作用域