博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS基本问题
阅读量:6267 次
发布时间:2019-06-22

本文共 708 字,大约阅读时间需要 2 分钟。

hot3.png

  1. 问题1:Scope作用范围

     考虑下面的代码

  (function(){

      var a=b=5;
  })();
  console.log(b);   

  什么会被打印到控制台上?

  回答:上面代码会打印5.

  诀窍:这里有两个变量声明,但a使用关键字var声明的,代表它是一个函数的局部变量.与此相反,b变成了全局变量.

 诀窍:它没有启用严格模式,代码会引发ReferenceError的错误,b没有定义(b is not defined).请记住,严格模式,则需要明确指定,才能实现全局变量声明.比如,你应该写:

  (function(){

  "use strict";
      var a=window.b=5;
  })();
  console.log(b);

2.问题2.声明提升

执行这段代码,输出什么结果.

  function test(){

    console.log(a);
    console.log(foo());
    var a=1;
    function foo(){
    return 2;
    }
 }

回答:这段代码的结果是undefined和2.

原因是,变量和函数的声明都被提前了(移到了函数的顶部),但变量不分配任何值.因此,在打印变量的时候,它在函数中存在(它被声明了),但它仍然是undefined.换句话说,上面的代码等同于以下内容:

    function test(){

    var a;
    function foo(){
    return 2;
    }
    console.log(a);
    console.log(foo());
    a=1;
 }

 test();

转载于:https://my.oschina.net/sai20150901/blog/801835

你可能感兴趣的文章
如何对抗硬件断点--- 调试寄存器
查看>>
mybatis学习
查看>>
从不同层面看cocos2d-x
查看>>
Struts2技术详解
查看>>
MFC应用程序向导生成的文件
查看>>
Oracle体系结构之oracle密码文件管理
查看>>
【leetcode】Remove Element (easy)
查看>>
mysql多表查询及其 group by 组内排序
查看>>
alsa的snd_pcm_readi()函数和snd_pcm_writei()
查看>>
Android学习网站推荐(转)
查看>>
嵌入式根文件系统的移植和制作详解
查看>>
MEF部件的生命周期(PartCreationPolicy)
查看>>
LCD的接口类型详解
查看>>
nginx 基础文档
查看>>
LintCode: Unique Characters
查看>>
Jackson序列化和反序列化Json数据完整示例
查看>>
.net 中的DllImport
查看>>
nyoj 517 最小公倍数 【java睑板】
查看>>
include与jsp:include区别
查看>>
ftp的20 21端口和主动被动模式
查看>>