当前位置: 首页 > article >正文

javascript的严格模式与有什么特点?

javascript的严格模式与有什么特点?

  • 开启严格模式
  • 严格模式中的变化
    • 1. 全局变量显示声明
    • 2、禁止使用with语句
    • 3、创设eval作用域
    • 4、禁止this指向全局对象(定时器的this还是指向window)
    • 5、显式报错

开启严格模式

//全局开启了严格模式
"use strict";
function fn(){
	//当前fn函数开启了严格模式
  "use strict";
  return "123";
} 

严格模式中的变化

1. 全局变量显示声明

'use strict'
num = 10 
console.log(num)// 报错,num未声明

报错,num未声明

2、禁止使用with语句

function f(x, o) {
  with(o) {
    console.log(x)
  }
}
f(null, {x:3}) // 3
// with 语句 
// 弊端:代码不易阅读,易混淆,程序在查找变量值时,先从指定的对象里找,那些不是指定对象的变量查找起来会很慢。
// 优点:减少不必要的指针路径解析运算

使用了with之后,在with里面x就专指o里面的x

弊端:代码不易阅读,易混淆,程序在查找变量值时,先从指定的对象里找,那些不是指定对象的变量查找起来会很慢。
优点:减少不必要的指针路径解析运算。

3、创设eval作用域

严格模式创设额外的作用域,正常模式下,eval作用域取决于它处于全局作用域还是函数作用域。严格模式下,eval语句本身就是一个作用域,不再生成全局变量,生成的变量只能用于eval内部。

'use strict'
var x = 2
console.info(eval('var x = 5; x')) // 5,  将计算js字符串,将其作为脚本代码来执行
console.log(x)  //  2

4、禁止this指向全局对象(定时器的this还是指向window)

严格模式下,不指向window就指向undefined

function Star() {
     this.sex = '男';
}
Star();  // 4. 严格模式下,如果构造函数不加new调用, this 指向undefined, 赋值则会报错.
var ldh = new Star();
console.log(ldh.sex);

5、显式报错

1、正常模式下,对一个对象的只读属性进行赋值,不会报错,只会默默地失败;严格模式下会报错。
2、严格模式下,对一个使用getter方法读取的属性进行赋值,会报错
3、对禁止扩展的对象添加新属性
4、删除不可删除的属性


http://www.kler.cn/a/4264.html

相关文章:

  • Vue2+OpenLayers实现折线绘制功能(提供Gitee源码)
  • 从AI原理到模型演进及代码实践 的学习二
  • 接口测试自动化实战(超详细的)
  • nginx 配置域名前缀访问 react 项目
  • SpringSecurity详解
  • 设计模式-工厂模式/抽象工厂模式
  • 小白学Pytorch系列--Torch.nn API Recurrent Layers(8)
  • 渗透测试之冰蝎实战
  • 使用 Alluxio 优化 EMR 上 Flink Join
  • 有钱还系统开发|有钱还系统顾头不顾尾?最后的人会受伤害?
  • Thinkphp 6.0路由的域名和跨域请求
  • TS常用数据类型(TypeScript常用数据类型,ts常用数据类型和js常用数据类型的区别)
  • 前端面试题之html css篇
  • Spring MVC 启动之 Handler 揭秘
  • C#学习 Day2
  • gunicorn启动flask输出调试信息
  • CocosCreator实战篇 | 实现刮刮卡和橡皮擦 | 擦除效果
  • Mysql语句复习
  • 安装及使用本地Maven仓库
  • 面经-javascript基础
  • get和post的区别
  • python使用正则表达式re
  • Linux 多线程:多线程和多进程的对比
  • ChatGPT再掀AI资本狂潮,30位科技创新VC投资者齐聚“实在智能”
  • 2023年科睿唯安官方剔除的35本SCI清单
  • 【CSS】清除浮动 ③ ( 清除浮动 - 使用 after 伪元素 | 语法简介 | 兼容低版本浏览器 | 原理分析 )