没有合适的资源?快使用搜索试试~ 我知道了~
JavaScript提升有什么用,为什么需要提升?需要这样写吗?
0 下载量 127 浏览量
2021-01-20
13:59:38
上传
评论
收藏 155KB PDF 举报
温馨提示
试读
3页
大家在学习JS时,对于变量提升和函数提升这个问题会不会有很多疑惑的地方?为什么要这么做?为什么不像其他动态语言一样,是从上到下逐句依次执行? 看过很多相关的文章,有人说这个的设计很低劣,它允许变量不声明就可以访问,这个问题让刚刚接触JS的人确实很不理解。 我们今天不说它是好还是坏,我们说下它究竟是怎么回事,应该怎么使用JS提升。 JavaScript提升是将所有声明提升到当前作用域顶部的默认行为,英文叫Hoisting。 在JavaScript中,可以在使用变量之后对其进行声明。 也就是说,可以在声明变量之前使用它。比如: x = 5; document.getElementById(de
资源推荐
资源详情
资源评论
JavaScript提升有什么用,为什么需要提升?需要这样写吗?提升有什么用,为什么需要提升?需要这样写吗?
大家在学习JS时,对于变量提升和函数提升这个问题会不会有很多疑惑的地方?为什么要这么做?为什么不像其他动态语言一
样,是从上到下逐句依次执行?
看过很多相关的文章,有人说这个的设计很低劣,它允许变量不声明就可以访问,这个问题让刚刚接触JS的人确实很不理解。
我们今天不说它是好还是坏,我们说下它究竟是怎么回事,应该怎么使用JS提升。
JavaScript提升是将所有声明提升到当前作用域顶部的默认行为,英文叫Hoisting。
在JavaScript中,可以在使用变量之后对其进行声明。
也就是说,可以在声明变量之前使用它。比如:
x = 5;
document.getElementById("demo").innerHTML = x;
var x;
上面的代码是没错的。也可以不用声明x。最后var x;去掉,代码也不会出错的。
函数也会被提升。比如:
test(5);
function test(x) {
return x * x;
}
注意:下面的情况不会被提升。注意:下面的情况不会被提升。
1、用、用 let 或或 const 声明的变量和常量不会被提升!声明的变量和常量不会被提升!
2、、JavaScript 初始化不会被提升!初始化不会被提升!
3、使用表达式定义的函数不会被提升。、使用表达式定义的函数不会被提升。
在声明变量之前使用变量,虽然JS会提升声明,但是,这是一种不严格的写法。我不建议大家这样写,知道JS会提升就可以
了。为了代码的可读性,为了程序不混乱,不容易出错,我强烈建议大家在每个作用域的开头声明所有变量。JS在解释代码的
时候,就是从上到下,这样写,也比较符合我们的阅读习惯。
严格模式严格模式
JS里有一个指令:“use strict”;
它表示严格模式。通过在脚本或函数的开头添加 “use strict”; 来声明严格模式。一旦声明了严格模式,它所在的作用域内就必须
按照严格模式来写JS。
“use strict” 指令只能在脚本或函数的开头被识别。
严格模式主要是规定了哪些写法不被允许。总结了一下:
第一:在不声明变量的情况下使用变量,是不允许的。比如:
"use strict";
x = 3.14; //报错
第二:重复参数名是不允许的。比如:
"use strict";
function test(a1,a1){} //报错
第三:八进制数值文本是不允许的。比如:
"use strict";
var x = 010; //报错
第四:转义字符是不允许的。比如:
"use strict";
var x = ; //报错
第五:写入只读属性是不允许的。比如:
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
资源评论
weixin_38692162
- 粉丝: 4
- 资源: 904
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab开发的全面详解LTE:MATLAB建模、仿真与实现-simulink.rar
- 自动驾驶定位系列教程二:系统架构.pdf
- 整站程序8优技巧网-8ujq.rar
- 世界各个国家或地区国际域名缩写
- 基于matlab开发的根据rvm回归模型自己编的matlab程序.rar
- 基于matlab开发的该程序为国内一所大学编写的LTE链路层仿真程序,根据LTE标准协议编写的,很容易看懂.rar
- 高效C++学生成绩管理系统:教育技术+C++17编程+数据管理+教务自动化
- 搜索链接要广告分类系统 v2.0-yad20.rar
- 基于matlab开发的Tipping的相关向量机RVM的回归MATLAB程序,有英文注释,可以运行.rar
- 一个点击正反转程序实例,可实现案件电机正反转
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功