js变量提升_一道JS变量提升题

d68ed464eb678bf655a8f7d1d1dc2fa7.png
    var a = 0;if(true){a = 1;function a(){};a = 21;console.log(a);}console.log(a);// 21 1 

当前上下文代码执行之前,会将带var/function的进行声明/定义。

当遇到“{}”时,新版浏览器和老版浏览器的处理不一致。

老版浏览器(IE10以下)忽略“{}”的影响,继续声明/定义,不存在块级作用域

新版浏览器中“{}”里的function只声明不定义,“{}”若出现funciton/let/const关键字,会创建一个块级上下文


本题在全局变量提升阶段会声明一个变量a,在块级作用域内的function a同样会声明,但是不定义。 代码继续执行

    var a = 0;

在全局下给a赋值0。

    if(true){a = 1;function a(){};a = 21;console.log(a);}

代码执行到条件判断时,创建一个块级作用域,在块级作用域内进行变量提升,声明并且定义funciton a

        a = 1;

块级作用域内给a赋值为1。

继续执行到函数定义的地方为了兼容ES3和ES6浏览器会做这样一步操作:

把代码之前所有对a的操作映射到全局

于时之前对块级作用域内变量a赋值为1的操作也会映射到全局的变量a,所以全局的a变成了1。所以最后控制台打印的是结果是21,和1,因为全局的a映射了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Adaboost的几个人脸检测网站

【1】基础学习笔记之opencv(1):opencv中facedetect例子浅析 http://www.cnblogs.com/tornadomeet/archive/2012/03/22/2411318.html【2】OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect http://blog.csdn.net/yang_xian521/arti…

Caffe训练过程:test_iter test_interval等概念

转载自http://blog.csdn.net/iamzhangzhuping/article/details/49993899 先上一张图,大家很熟悉的一张图。 首先说明一个概念:在caffe中的一次迭代iteration指的是一个batch,而不是一张图片。 下面主要说下2个概念: test_ite…

R的获取和安装

R的获取和安装 一、下载 R可以在CRAN(Comprehensive r archive network)http://cran.r-project.org上免费下载,可供选择的有Linux、Mac OS X和windows对应的二进制文件; 我这里选择的是windows版本。打开如下页面: bas…

Bitmap recycle()

Bitmap调用recycle? When?Bitmap有一个recycle方法。含义很easy,恢复Bitmap空间。 Q 1: Bitmap有调用recycle方法的必要性? A: 嵌入式系统总是格外注重空间的问题,不小心的话就会有OOM。可是应用层使用java的android平台有其天然的优势【ja…

扩展欧几里得算法求逆元_从辗转相除法到求逆元,数论算法初体验

今天是算法和数据结构专题的第22篇文章,我们一起来聊聊辗转相除法。辗转相除法又名欧几里得算法,是求最大公约数的一种算法,英文缩写是gcd。所以如果你在大牛的代码或者是书上看到gcd,要注意,这不是某某党,…

[翻译] Fast Image Cache

https://github.com/path/FastImageCache Fast Image Cache is an efficient, persistent, and—above all—fast way to store and retrieve images in your iOS application. Part of any good iOS applications user experience is fast, smooth scrolling, and Fast Image …

centos 安装 MatConvNet (gpu)

1. 安装准备 matlab2017a ,参考:《centos 安装matlab2017a(无root权限)》 GCC 4.8(支持c11) 键入:sudo yum install gcc gcc-c (建议sudo装) 至少CUDA 7.5,(本人选择cuda8.0&#xff…

php练习 租房子

题目要求 1.封装类 <?php class DBDA {public $fuwuqi"localhost"; //服务器地址public $yonghuming"root";//用户名public $mima"";//密码 public $dbconnect;//连接对象//操作数据库的方法//$sql代表需要执行的SQL语句//$type代表SQL语…

【SHARE】WEB前端学习资料

参考资料&#xff1a;https://github.com/karlhorky/learn-to-program学习网站&#xff1a;http://www.codecademy.com/learn https://www.codeschool.com/ 制作网站&#xff1a;https://webmaker.org/zh-CN/explore JavaScript2015&#xff1a;https://esdiscuss.org/topic/ja…

python软件安装和使用方法_aws cli的安装及使用(内含python的安装方法)

liunx环境(使用bundled installer)&#xff1a;1.wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip //下载bundled installer2.unzip awscli-bundle.zip3.sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws如果你没有sudo权限或者是你想在当…

centos 安装boost(caffe需要)

安装 由于安装caffe&#xff0c;要求boost的版本在1.55以上&#xff0c;而服务器上的刚好是1.54,所以进行了重装。 参考&#xff1a;《CentOS 7下编译安装Boost_1_57_0 》 不过由于pycaffe需要boost.python,因此需要在./b2时修改为./b2 –stage debug 才可以。而不能去掉py…

JAVA正则表达式介绍和使用

本文引用自 http://www.cnblogs.com/android-html5/archive/2012/06/02/2533924.html 技术博客 1.Java中在某个字符串中查询某个字符或者某个子字串 Java代码 String s "Shang Hai Hong Qiao Fei Ji Chang";    String regEx "a|F"; //表示a或F Pat…

集合框架中的接口及其实现类

Collection&#xff1a;集合层次中的根接口&#xff0c;JDK没有提供这个接口直接地实现类。Set&#xff1a;不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。List&#xff1a;是一个有序的集合&#xff0c;可以包含重复的元素。提供了按索引访问的方式。Map&#x…

C# 多线程 Parallel.For 和 For 谁的效率高?那么 Parallel.ForEach 和 ForEach 呢?

还是那句话&#xff1a;十年河东&#xff0c;十年河西&#xff0c;莫欺少年穷。 今天和大家探讨一个问题&#xff1a;Parallel.For 和 For 谁的效率高呢&#xff1f; 从CPU使用方面而言&#xff0c;Parallel.For 属于多线程范畴&#xff0c;可以开辟多个线程使用CPU内核&#x…

cuda、cudnn相关问题链接

1. cuda&#xff0c;cudnn安装 <caffe安装系列——安装cuda和cudnn> 2. 查看已有的cuda等版本 cuda 版本 cat /usr/local/cuda/version.txtcudnn 版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 23. cudnn的安装&#xff0c;路径和版本问题 http://…

bigdecimal 小于等于0_图解小于 K 的两数之和

点击蓝色“五分钟学算法”关注我哟加个“星标”&#xff0c;天天中午 12:15&#xff0c;一起学算法作者 | P.yh来源 | 五分钟学算法题目描述 题目来源于 LeetCode 上第 1099 号问题&#xff1a;小于 K 的两数之和。给你一个整数数组 A 和一个整数 K&#xff0c;请在该数组中找出…

用STS创建Maven的Web项目转

右键New——>other——》Maven——》Maven Project 弹出框中点击Next&#xff0c;在Filter中写上&#xff1a;webapp. 然后在下面的框中选择org.apache.maven.archetypes&#xff0c;点击Next 在新弹出的窗口中写上Group Id和Artifact Id&#xff0c;Finish即可成功。 创建完…

img超出div width时, jQuery动态改变图片显示大小

参考&#xff1a; 1. http://blog.csdn.net/roman_yu/article/details/6641911 2. http://www.cnblogs.com/zyzlywq/archive/2012/02/23/2364292.html转载于:https://www.cnblogs.com/carlo/p/4584008.html

《TOGAF 9.1IT企业架构》什么是企业IT架构

2. 什么是企业IT架构 现在有越来越多的企业IT架构定义。在这一章&#xff0c;你会学习到一些企业IT架构的方法&#xff0c;我们会给你深入解释一种实用的方法&#xff0c;这种方法视企业架构师为CIO(译注&#xff1a;CIO首席信息官&#xff0c;是负责一个公司信息技术和系统所有…

pdf 深入理解kotlin协程_Kotlin协程实现原理:挂起与恢复

今天我们来聊聊Kotlin的协程Coroutine。如果你还没有接触过协程&#xff0c;推荐你先阅读这篇入门级文章What? 你还不知道Kotlin Coroutine?如果你已经接触过协程&#xff0c;但对协程的原理存在疑惑&#xff0c;那么在阅读本篇文章之前推荐你先阅读下面的文章&#xff0c;这…