js高级之变量进阶

变量可以说是js最基本的一个东西了,相信学过js的同学都知道js的变量大概分为Number 布尔 对象等等这些类型,那么今天我们来深入了解一下你所不知道的“变量”。
首先我们来看一个代码


QQ图片20190413120317.png

你们认为b和d分别输出的是什么呢?

思考时间....................

或许有同学会认为输出的是1和[1,2,3]
那么我们来看看结果


QQ图片20190413120507.png

结果却是1 [1,0,3]
b是1肯定比较容易理解,那么没有对d进行修改为什么会变化呢?
这里就需要对变量进行深入理解,js中变量分为基本变量和引用变量,其中number 布尔等这类是基本变量,它是存放在内存栈里面,就是说变量a指向的是1这个内容,将a赋值给b就将这个内容赋值给了b所在的内存栈,它们之间互不影响
而数组,函数这类引用变量是存放在内存堆里面,c存放的是指向内存堆的地址,将c赋值给d就是将地址给d,也就是说c和d现在是指向同一个内存堆里面的数组,改变c指向的数组,那么由于d指向的是同一个数组,d的内容也就会被改变了。

下面我们再来一道题

QQ图片20190413121158.png

这里输出的3个a分别是什么?

思考时间.....

或许有同学认为是1,1,2, 或者 1,2,2
那么我们来看看输出结果

[图片上传中...(QQ图片20190413121548.png-6db3a5-1555128955000-0)]


QQ图片20190413121324.png

结果是 1 undefined 2
1和2比较好理解,那么第二个为什么是undefined呢

这里我们就不得不谈到js的执行机制了
js中存在一个叫做变量声明提示的机制,
在执行js代码前,它会将所有代码扫描一边,其中将变量声明提升到变量作用域的最前面
也就是是说提升后代码变为了


QQ图片20190413121548.png

这样是不是一下就明白了
由于只定义了a却没赋值,所以第二个a就输出的是undefined

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 只见那位公子身着蓝色长袍,腰间挂有一块玉佩,邪魅的桃花眼,配着慵懒的嘴唇,一头柔顺的头发令人心飞扬,一眼便可看出此...
    贱萌小生阅读 2,629评论 0 0
  • 我们常常说,“兴趣是最好的老师”。的确,当对一件事情拥有了兴趣以后,就会不自觉地比别人多付出一些,将过程看成是快乐...
    蕾蕾播种幸福阅读 5,364评论 1 1
  • ——祝全体女工们“三、八“节快乐 冲压车间十朵花 各个都是孩的妈 要问他们都干啥 ...
    陈桂林阅读 2,755评论 0 9
  • 孙女今年八岁,大大的眼,走路总是一蹦一跳,喜欢小动物,买了一只笛鹦鹉。纯白,有一个勾勾的嘴,一点竖起的羽冠。 孙女...
    岗岗hg阅读 3,262评论 1 2

友情链接更多精彩内容