温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JS变量的声明

发布时间:2020-07-24 14:56:28 来源:网络 阅读:313 作者:paulsen 栏目:web开发
var x = 1;
test();

function test(){
    console.log(x) //1
}

function test(){
    console.log(x) //undefined
    var x = 10;
}

function test(){
    console.log(x) //1
    x = 10;
    console.log(x) //10
}

大前提:Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定变量的作用域

第一种test写法  X先在外层被声明了全局作用域 执行到test的时候 X作用域没有变 直接打印全局x

第二种test写法  X先在外层被声明了全局作用域 执行到test时候 x作用域被声明为局部作用域 而此时局部作用域的x并没有赋值  赋值是在console之后才发生的

第三种test写法  X先在外层被声明了全局作用域 执行到test的时候 X没有被声明为局部作用域  所以x仍然为全局作用域 故第一个可以打印出1


可以这样理解 在执行方法的时候 第一步执行的是变量的声明  然后才是后面的逻辑代码

var x = 1


function test(){
    alert('ok')
    console.log('ok')
    var x = 100
}


function test(){
    var x;
    alert('ok')
    console.log('ok')
    x=100;
}

上面第二种test就是第一种test在JS解析时候的执行过程 执行到test方法时 先把声明变量的部分挪到前面 确定变量的作用域; 赋值的地方不变; 第二种test x=100 此时的X只是局部赋值


函数内容的var是局部赋值 不带var的直接赋值是全局的

function test(){
    x= 1
}
console.log(x)//undefined
test();
console.log(x)//1


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI