星空网 > 软件开发 > Java

JS函数声明的问题

三个例子

 var a = 10;2 function test(){3   a = 100;4   console.log(a);5   console.log(this.a);6   var a;7   console.log(a);8 }9 test();

程序的运行结果为100  10  100;

解析:Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定变量的作用域,所以在函数test执行前,由于第6行声明了局部变量a,所以函数内部的a都指向已经声明的局部变量,所以第4行输出100。第5行输出this.a,我们都知道,函数内部的this指针指向的是函数的调用者,在这里函数test被全局对象调用,所以this指针指向全局对象(这里即window),所以this.a = window.a,一开始生命了全局变量a=10,所以第5行输出结果为10。第7行输出结果为100,因为局部变量a在第3行已经被赋值了100,所以直接输出局部变量a的值。

 

 var a = 100;2 function test(){3   console.log(a);4   var a = 10;5   console.log(a);6 }7 test();

程序的运行结果为 undefined  10 

解析:Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),但是不能对变量定义做提前解析,在这个函数中,执行第3行前,可以认为已经声明了变量a,但是并没有定义(这里即赋值),所以第3行输出结果为undefined,执行第4行a =10后,变量a的值就为10,所以第5行输出结果为10。

最后一个例子:

1 var a = 100;2 function test(){3   console.log(a);4   a = 10;5   console.log(a);6 }7 test();8 console.log(a);

程序的运行结果为 100 10 10

解析:我们知道在函数内部,一般用var声明的为局部变量,没用var声明的一般为全局变量,在test函数内,a=10声明了一个全局变量,所以第3行的a应该输出全局变量的值,而在函数执行之前已经声明过一个全局变量并赋值100,所以这里第上输出100。第4行给全局变量a 重新赋值10,所以全局变量a的值变成10,所以第5行输出10。而在函数test外部,第8行输出全局变量a的值,因为全局变量被重新赋值为10,所以输出结果即为10。

 

希望能帮到大家。




原标题:JS函数声明的问题

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

沃尔玛将于12月24日向小时工支付第四次特别奖金:https://www.ikjzd.com/articles/136136
阿里国际站首届12.12跨境贸易出货节将开启:https://www.ikjzd.com/articles/136137
广东首列跨境电商中欧班列从深圳正式开行:https://www.ikjzd.com/articles/136138
因解雇倡导改善工作环境的仓库员工 亚马逊面临联邦诉讼:https://www.ikjzd.com/articles/136139
成立仅五年的Shopee是如何在东南亚“乘风破浪”的:https://www.ikjzd.com/articles/136140
美国不再对TikTok出售案延期 但谈判仍将继续:https://www.ikjzd.com/articles/136141
跨境支付百科——巴西支付篇:https://www.kjdsnews.com/a/1836648.html
大福地快捷酒店预订 大福酒店怎么走:https://www.vstour.cn/a/365187.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流