javascript - 关于变量的问题
本文介绍了javascript - 关于变量的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
代码如下
var a=1;
function cc(){
a=2;
return a;
function a(){}这个地方是什么意思有什么意义
}
cc();
console.log(a);为什么会输出1
解决方案
这主要是基础知识的应用了。JavaScript对于作用域(Scope)和上下文(Context)的实现是这门语言的一个非常独到的地方,函数可以接收不同的的上下文和作用域。
几个知识点:
函数体内部,局部变量的优先级比同名的全局变量高。
函数中声明的变量在整个函数中都有定义。
函数声明提升,且函数声明提升优于变量声明提升。
JavaScript 解释器前瞻性查找所有变量定义,把它们提升到函数顶部。所以上面的代码可等价于:
var a;
a = 1;
function cc(){
var a // 这个a是函数声明的提升,优先变量的。所以cc中的a变为局部变量。
a=2;
a = function (){} // 这个函数本来写在retun 后面,但是声明是有效的。
return a;
}
cc(); // 返回一个在cc中的空函数
console.log(a);// 等于当前作用域的a=1
这篇关于javascript - 关于变量的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文