JS变量中你不知道的小埋伏
即使是前端大神有时候也会被一些小埋伏给打趴下,即时防患于未然才是王道,今天小千就来给大家介绍几个JS变量设置中的小埋伏,拿好小本本。
使用var关键字声明的变量即显式声明变量:如:var abc1 = ‘hello’
js允许不使用var声明变量即隐式声明变量:如:abc2 = ‘world’
那么,问题来了,这两种变量有什么不一样的地方吗?
1.如果abc1和abc2 都在全局作用域,在浏览器控制台打印window对象:console.log( window )
如下图:
上图可以看到:在全局的变量abc1和abc2都是window对象的属性,都拥有全局作用域。
2.如果abc1和abc2都在函数作用域,在浏览器控制台打印window对象?
如下图:
上图可以看到:在函数作用域中abc1不会出现在window对象中,是一个局部变量;而abc2依然是window对象的属性,拥有全局作用域。
3.如果abc1和abc2 都在全局作用域,都是window对象的属性,它们是否可以如对象属性一般可以被删除呢?
如下图:
上图可以看到:使用var声明的变量abc1并没有被删除,依然是window对象的属性;而不使用var声明的变量abc2已被删除掉。
为什么会有这样的差别呢?
这与默认的对象属性描述符有关!
如下图:
上图可以看到:window对象的属性abc1的描述符中,configurable: false 表示该属性不可配置、不可删除。
如下图:
上图可以看到:window对象的属性abc2的描述符中,configurable: true 表示该属性可配置、可删除。
正是对象属性描述符中的默认设置不一样,导致了是否可删除的差异!
在js中变量声明和函数声明会出现‘声明提升’,js引擎解析执行代码时分为两个阶段:1.预解析阶段;2.逐行执行阶段。
在预解析阶段变量abc1被声明并赋初始值为undefined;在逐行执行阶段变量abc1被赋值为‘hello’;所以,在变量声明之前打印不会报错,打印的值为undefined。
本文来自千锋教育:http://www.mobiletrain.org/
JS变量中你不知道的小埋伏相关推荐
- 《变量》精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心
<变量>书中的精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心 心理学上,有一个著名的实验,叫"看不见的大猩猩".这个实验是这样的:参加测试 ...
- js中变量作用域的小理解
一:变量作用域 在js代码中每个变量都是有自己的作用域的,js中不像C语言有块级作用域的概念,取而代之的是函数作用域,看如下代码: var scope="global"; func ...
- html img调用js,html调用js变量 如何在html中输出js文件中的变量
html页面代码中怎么调用js变量?html页面代码中怎么调用js变量,例如 在html代码中插入js代码: a=取浏览你把index1.js 中的onReady 去掉,把index1.js改成 fu ...
- jsf取js变量_JSF页面中的JS取得受管bean的数据(受管bean发送数据到页面)
[问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: 删除- http://blog.csdn.net/xxjoy_777/articl ...
- js变量和java变量相等,js中变量和jsp中java代码中变量互相访问解决方案
1.js变量获取jsp页面中java代码的变量值. 方法:var JS变量名 = 我们常常会将js文件和jsp文件分开写,在js文件中,上面的方法似乎不管用了. 也可以通过变通的方法来解决: a.js ...
- [js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走?
[js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走? 在浏览器环境下JS 解析器解析到未定义变量时,会抛出 Uncaught ReferenceError 错误,JS 引擎会停 ...
- html自定义js程序,JS中微信小程序自定义底部弹出框
实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...
- 外部js php变量,在外部JS文件中包含PHP变量?
我的解决方案结合了几种技术,其中一些已经在这个问题的答案中提到过. 是的,将PHP与JS分开 首先:是的,你应该将你的JS与PHP分开.您可以将其放在单独的文件中,但是您需要对当前代码进行一些更改.不 ...
- php声明js变量类型,js中变量是什么以及有哪些类型
在js中,变量是存储信息的容器:JavaScript中有两种类型的变量:局部变量和全局变量. js如何声明变量? 在js中,可以使用关键词"var"或者"let" ...
最新文章
- 华为云免费体验 怎么使用_华为云Classroom免费向全国高校开放,云端学习更高效...
- python【数据结构与算法】动态规划详解从背包到最长公共子序列(看不懂你来打我)
- 数据结构读书笔记(三)(C语言)
- hibernate mysql id 自增长 注解_hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询...
- 以“百钱买百鸡”问题练习使用 C语言 goto 语句
- java用JDBC连接数据库的方式
- 如何在xshell中查看某一接口的服务_【干货分享】如何使用远程工具进入Linux系统...
- Java进阶(二十九)集合12:集合练习题
- SQL语句的基础教程(一)
- 傻X了:mac上编译的程序放到linux上运行
- 未能联接game center服务器,win10系统GameCenter无法连接服务器的处理步骤
- 《异常点检测》 - 第十章阅读记录 - 离散序列的异常点检测
- CentOS离线 + 在线安装telnet(rpm包安装)
- 想一想就感觉到生活还是充满很多正能量的
- 2022-2028年中国桌面云产业发展动态及市场需求预测报告
- c语言求逆程序,求逆矩阵的C语言源程序CINV
- 美美征婚 阿米托佛(*^__^*)
- 仿联想商城laravel实战---3、前端页面搭建(什么情况下需要路由接参数)
- 基于SSH的客车网上售票系统的设计与实现
- python图灵机器人微信号_个人微信接入图灵机器人(基于Python)