当前位置: 首页 >文章 > 每天一个前端冷知识系列:这个是JS中难以驯服的变量名,体验未有的感觉
收藏
分享

每天一个前端冷知识系列:这个是JS中难以驯服的变量名,体验未有的感觉

举报李游Leo李游Leo发布于 2020-06-091677阅读2点赞1评论
我们这次来聊的的这个变量名叫“name”...

我们都知道JS在使用时我们会存储很多的变量名方便调用,大多数情况我们会选择避免使用关键字或者保留字做为变量的名称,因为使用保留字的话会给你报个大大的红字,告诉咱们这个已经被我们占上了,你得换个变量名了。

虽然有一些变量可以赋值但是实际没有什么作用,比如window、top等等。


我们这次来聊的的这个变量名叫“name”,name在JavaScript中既不是关键字也不是保留字,在使用name作为变量名后会出现什么问题呢?


在控制台如果输入"name",可以看到,"name"是一个空的字符串然而我并没有定义name这个变量,他也不报错,为什么会默认赋值给空的字符串呢?

如果你想驯服这个变量是非常困难的,这个东西如果如果赋值是个对象,那么他将吐出来是个字符串。


如果你给他一个数字,那么它将给你吐出来一个数字,如果是一个数组会以字符串形式吐出来,如果给一个函数也是字符串形式吐出来,相信眼尖的同学已经找到规律了,这不就是自带个toString功能么?


但是如果你给他赋值是个数组,再用索引值查看他的话,他只会给你把第一个值给你,当我们感觉摸到规律时,这个结果又让我们摸不到头脑了。

这个东西其实是window的一个属性,简单来说就是window的名字,当name处于在window环境下就会有这样的结果发生,如果是局部变量就不会出现这样的问题,所以至于作者为什么要这么设计这个变量,我想还是那句解释:可能是历史遗留问题。

1条评论
别默默看啦~登录/注册一起参与讨论吧~

暂无评论

请选择举报理由

违反法律法规

侵犯个人权益

有害网站环境

更多训练营>>

为你推荐 · 训练营(全勤打卡报名费全额返累计全额返用户133,637人)

电商海报设计训练营
距离开班仅剩11天64人已报名
【5月】零基础手绘插画训练营
距离开班仅剩11天51人已报名
【5月】零基础动态表情包创作训练营
距离开班仅剩28天15人已报名
特惠
充值
7折购
今日还在继续学习的你,太棒了!
7
折扣券可用于
年费无限VIP
立 即
使 用
此活动优惠不可与其他活动叠加使用
有效期:000000
消息
登录即可查看消息记录
建议
意见
官方
客服
在线咨询客服热线

您可以与在线客服进行沟通获得帮助

工作日:9:00~22:00节假日:9:00~18:00

联系在线客服

您可以电话联系客服进行沟通获得帮助

工作日:9:30~18:30

400-862-9191
虎课
积分
免费学习89000+个教程!
配套素材、源文件一键下载!
昨日学员已学习了41,154
并提交了234份作业!
登录后立即学习!
loading
微信扫码关注即可登录
您需要同意协议才可以进行登录
登录虎课网,每天免费学课程全站 89000+ 视频会员教程 | 每日可免费学 1
为确保账户信息安全
请先进行真实姓名验证后进行充值付款
立即验证