首页 > 其他分享 > 执行以下代码,输出的a值为 undefined

执行以下代码,输出的a值为 undefined

时间:2023-11-10 18:23:38浏览次数:33  
标签:undefined 代码 值为 window var 声明 变量

if(! "a" in window){
    var a = 1;
}
alert(a);

官方解析:
由于存在变量提升,在if语句执行之前会先使用var声明变量a,并且声明时是在全局作用域下,因此变量a自动成为window对象的属性,
故a in window的返回结果为true,
“!”将条件取反后返回结果为false,所以不会执行if中的赋值语句,a值为undefined

变量在同一作用域中总是会将声明部分提升至顶部优先进行解析的, 注意这里是只会将声明提升,其余部分仍然在原位置。


  var a; 

  if(! "a" in window){ 

      a=1;


  } 

  alert(a); 

  // "prop in obj"其中prop是obj的属性名

标签:undefined,代码,值为,window,var,声明,变量
From: https://www.cnblogs.com/longmo666/p/17824771.html

相关文章

  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<signal.h>#include<setjmp.h> //foralongjumpjmp_bufenv;//forsavinglonjmpenviromentintcount=0;voidhandler(intsig,......
  • 执行以下代码,输出结果为()
    执行以下代码,输出结果为()console.log(1);leta=setTimeout(()=>{console.log(2)},0);console.log(3);Promise.resolve(4).then(b=>{console.log(b);clearTimeout(a);});console.log(5);promise对象的then()方法属于微任务,而setTimeout()定时器函数为宏任......
  • 请问以下JS代码在Node环境下的输出顺序是?
    请问以下JS代码在Node环境下的输出顺序是?Promise.resolve().then(()=>{console.log('p1');}).then(()=>{console.log('p2');})process.nextTick(()=>{console.log('n1');process.nextTick(()=>{console.log('......
  • 以下代码执行后,result 的值为 [“75team2017”]
    varresult="75team2017".match(/\d+\w*/g);match()方法检索返回一个字符串匹配正则表达式的结果,匹配成功则返回数组,失败则返回null。在正则表达式中,\d表示匹配数字0-9,+表示匹配前面字符一次或者多次,\w表示匹配字母、数字或者下划线,表示匹配前面字符0次或者多次,修饰符g表示全......
  • 请问以下JS代码的输出是? 935、 ['read', 'write']
    functionfather(){this.num=935;this.work=['read','write','listen'];}functionson(){}son.prototype=newfather();letson1=newson();letson2=newson();son1.num=117;son1.work.pop();console.log(son2.......
  • 小程序性能优化之JavaScript代码优化
    大家好,今天我们来聊一聊小程序性能优化中的JavaScript代码优化。在编程过程中,我们都喜欢轻松愉快,不想戴着沉重的“全局疯狂”帽子。但有时候,过度使用全局变量会让我们的程序变得难以维护,就像在一片大森林里找寻一个小木屋。这时候,我们就需要考虑一下,是不是该减轻一下我们的“全局疯......
  • "+new Array(017)" 这段代码输出为 NaN
    首先,前面+是一元运算符,相当于我们说的正负,无运算效果,但是可以将字符串等转为number类型。此题中017其实是八进制,故而是是Array(15)。这里相当于对于一个未赋值但是长度为15的数组进行number类型转化,其结果为NaN八进制的17转为二进制:001111,再转为十进制的15(8+4+2+1)+运算符......
  • 直播系统源代码,实现倒计时,定时任务
    直播系统源代码,实现倒计时,定时任务1.使用CountDownTimer类: valcountDownTimer=object:CountDownTimer(30000,1000){  overridefunonTick(millisUntilFinished:Long){    //在倒计时的过程中,每秒钟会执行一次该方法    valsecondsRemainin......
  • 多维详述MediaBox互动直播AUI Kit低代码开发方案
    本专栏将分享阿里云视频云MediaBox系列技术文章,深度剖析音视频开发利器的技术架构、技术性能、开发能效和最佳实践,一起开启音视频的开发之旅。本文为MediaBox最佳实践篇,重点从互动直播AUIKit的核心能力、技术架构、快速集成等方面,介绍如何通过低代码快速接入互动直播视频业务。......
  • 低代码开发平台、权限管理(RBAC)!
    老权限系统的问题与现状大多数老系统过去并没有一个统一的权限管理系统,权限管理由各业务自行研发或是使用其他业务的权限系统,权限管理的不统一带来了不少问题:1、各业务重复造轮子,维护成本高2、各系统只解决部分场景问题,方案不够通用,新项目选型......