您的位置:首页 > Web前端 > JavaScript

JavaScript的作用域和变量提升

2017-11-16 22:26 561 查看
1.变量域

js中只有函数作用域(local scope)和全局作用域(global scope),没有块级作用域

2.变量提升

对于val定义的变量和function a(){} ,存在变量提升。

注意:函数表达式不存在变量提升。

实例1:

(function() {

console.log(testc);                                  //打印出undefined


testa(); // 打印出testa testb(); // 报错:提示undefined is not a function function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc";})();

实例二:

var a = 1;
function b() {
     console.log(a); //function a(){}
    a = 10;
     console.log(a); //10,此时函数作用域中定义了变量a。
    return;
    function a() { //变量提升到最前面,相当于var a=function(){}
    }
}
b();
console.log(a);  // 1 ,访问的是全局变量


实例三:
var a = 1;
function b() {
console.log(a); //1,此时a为全局变量
a = 10;
console.log(a); //10,改变了全局变量的值
return;
function c() {

}
}
b();
console.log(a); //10

欢迎指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: