文档章节

JS基本问题

jj_cui
 jj_cui
发布于 2016/12/08 08:34
字数 301
阅读 3
收藏 0
  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();

© 著作权归作者所有

共有 人打赏支持
jj_cui
粉丝 1
博文 40
码字总数 7779
作品 0
大连
code-rhythm:写了个vscode扩展,让代码更有快感

项目地址 Github - onvno/code-rhythm 原因 写代码本身是件快乐的事情,但开发中总有各种烦恼。 有时候一个很简单的方法,因为不确定传参的形式,不确定返回形式,不确定具体用法,就得翻墙,...

onvno_
06/07
0
0
细说JavaScript数据类型及转换

细说JavaScript数据类型及转换 JavaScript数据类型 1.Boolean(布尔) 布尔:(值类型)var b1=true;//布尔类型 2.Number(数字) 数值:(值类型)var n1=3.1415926;//数值类型 n1.toFixed...

开元中国2015
2015/07/13
0
0
谈谈javascript中的多线程

不存在的,javascript中根本不存在多线程...... 先不要慌,没有多线程我们可以模仿多线程呀!定时器、web workder等等。 存在即合理,为啥javascript需要多线程? javascript对于现如今的web...

伯涵Style
前天
0
0
好的javascript程序员

这段时间一直在使用JS进行开发,其实我挺喜欢JS的,一个主要的原因就是自由。JS限制较少可以容易的实现自己的一些思想。或者换种说法,就是可以写出极其精简的代码,虽然精简不到LISP的水平,...

崔钢
2014/10/25
0
0
JavaScript引擎的工作原理

什么是JavaScript解析引擎? 简单地说,JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序。比方说,当你写了 var a = 1 + 1; 这样一段代码,JavaScr...

武文海
2014/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

gson1.7.1线程并发导致空指针问题

java.lang.NullPointerExceptionat com.google.gson.FieldAttributes.getAnnotationFromArray(FieldAttributes.java:231)at com.google.gson.FieldAttributes.getAnnotation(FieldAttribut......

东风125
34分钟前
1
0
以太坊RPC接口使用

以太坊RPC接口文档: https://github.com/ethereum/wiki/wiki/JSON-RPC#web3_clientversion 使用方式: 比如我要调用某个合约的balanceOf(address _owner)方法。 因为没有改变合约的状态,所以...

王坤charlie
今天
2
0
C#下的一个好用的日历库(sxtwl_cpp),支持农历转公历,和公历转农历等功能

sxtwl_cpp是寿星天文历的C++版本实现。支持多种语言的绑定 代码首页 懒人包 懒人包使用方法 1、右链工程中的引用-》添加引用-》浏览-》选中dotnet目录下的sxtwl.net.dll 2、生成解决方案-》找...

元谷
今天
1
0
C++基础知识

链接:https://zhuanlan.zhihu.com/p/38399566 本文主要提一下以下三个区别: 引用必须初始化,而指针可以不初始化。 我们在定义一个引用的时候必须为其指定一个初始值,但是指针却不需要。 ...

悲催的古灵武士
今天
1
0
Oracle备份脚本,保留10天数据

@echo off echo 删除10天前的备分文件和日志forfiles /p "D:\oracleback\backfile" /m *.dmp /d -10 /c "cmd /c del @path" forfiles /p "D:\oracleback\backfile" /m *.log /d -10......

lyle_luo
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部