腾讯前端笔试的一道选择题,谁能解释一下

var a = 1;
function func() {
console.log(a) // undefined
var a = 2;
console.log(this.a); // undefined
}
func();

全部评论
你这个是在node环境下运行的结果吧实际代码相当于: var a = 1; function func() { var a; console.log(a) // undefined a = 2; console.log(this.a); // 1 } func(); 第一个输出,由于存在变量提升,实际访问的a只是刚声明,故打印undefined第二个输出,函数内部的this取决于函数运行时的环境,在浏览器环境中全局对象为window,获取到的是window.a,因为全局对象的属性和全局变量是等价的,它的值就是全局变量a的值另外的需要注意的是,全局对象的属性与全局变量等价这句话对于node来说只在repl环境适用,在模块环境中要将: var a = 1; 改为 global.a = 1; 得到同样的结果:undefined, 1
点赞 回复 分享
发布于 2018-04-05 21:55
第二个输出是1,this指向window
点赞 回复 分享
发布于 2018-04-05 21:18
var存在变量题提升 相当于 var a log(a) a=2
点赞 回复 分享
发布于 2018-04-05 21:16
第一个hoisting后等价于 var a; console.log(a); a = 2;
点赞 回复 分享
发布于 2018-04-05 20:59
第二个输出是1吧
点赞 回复 分享
发布于 2018-04-05 20:58
第二个是1
点赞 回复 分享
发布于 2018-04-05 20:57

相关推荐

10-29 16:42
门头沟学院 Java
1.今天什么国标的公司打电话约面试,还得准备ppt,好麻烦,网上查薪资一般,打算拒了,不面了2.字节又复活了,什么安全开发,也不知道怎么样,面一面试试吧,还是挺想去字节的,但好难,随缘吧所以今天没面试
嵌入式的小白:面试前可以好好准备下 1.看看你投递的岗位的岗位描述,分析下是哪个业务线,同使要罗列他们描述中提到的技术点 2.根据1中的两点准备 3.岗位描述中应该还有语言要求,这个刷刷八股,要是对自己语言能力很有把握,那就不用看这点了 4.找下你简历中项目部分,看有没有和岗位描述中技术点重合的,这种在面试提到项目时,是高概率问题 好好准备,祝你面试顺利
我的求职进度条
点赞 评论 收藏
分享
牛客63735620...:只会51能找到工作我吃,了解基本通信协议也远远不够,最最起码得会个stm32吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务