JS严格模式知识点总结

作者:laozhang 时间:2024-05-13 10:06:42 

所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict”

如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以只在函数中打开严格模式

1.严格模式下没有全局变量

a="test"

严格模式下会报错,非严格模式下正常

2.删除变量

var 有三种声明的情形

  • var 声明的全局变量

  • var 声明的局部变量

  • eval()中声明的全局变量

第一种和第二种情况是无法用 delete删掉的。

首先第一种情况声明的全局对象虽然是windows的属性,但这个属性的configurable=false 因此是无法删除的

第二种情况 局部变量更不行了,连依附的对象是谁都不知道,怎么删除

第三种情况eval()稍后会说到。

回归正题。也就是说非严格模式下,可以删除变量,但是会失败返回false.

严格模式下删除变量会报错。

3.对象

在下列情况下操作对象会报错

  1. 为只读属性赋值会报错

  2. 对不可配置的属性使用delete 会报错

  3. 为不可扩展的对象添加属性会报错

  4. 在使用对象字面量的时候,属性名必须唯一。比如


var person={
 name:"1",
 name:"2"
}

非严格模式下会默认取值第二个,严格模式下会报错。

4.函数

严格模式要求函数参数名称必须唯一


function(n,n){
 // todo
}

在非严格模式下,这个函数声明不会报错,通过参数名只能访问到第二个参数,第一个参数得通过arguments去访问。

arguments在两种模式下也有所不同

在非严格模式下,修改命名参数的值会反映到arguments对象中,在严格模式下两个值是独立的。

淘汰了 arguments.callee(引用函数本身),arguments.caller(引用调用函数)。

严格模式下函数名不能使用js保留字

**严格模式下只能在脚本的顶级和在函数内部声明函数,在if语句中声明函数会导致语法错误。**


if(true){
 function(){
  // 严格模式下报错
}
}

5.this

在非严格模式下使用函数的apply(),call(),传入null 或者undefined值会被转换为全局对象。在严格模式下,函数的this始终是指定的值,无论指定的是什么值。


var a="1";
function test(){
console.log(this.a)
}
test.call(null) 在非严格模式下会输出1,严格模式下this就指代的就是null,null没有a属性,就会报错。

 

标签:JS,严格模式
0
投稿

猜你喜欢

  • Python基于随机采样一至性实现拟合椭圆

    2022-11-25 01:44:35
  • python 中的 super详解

    2023-09-07 01:27:35
  • 支持生僻字且自动识别utf-8编码的php汉字转拼音类

    2023-11-14 21:04:40
  • 使用Django框架创建项目

    2023-02-14 10:30:25
  • 详解Go中gin框架如何实现带颜色日志

    2024-05-21 10:19:11
  • 为SQL Server数据库传数组参数的变通办法

    2009-10-23 09:26:00
  • 详解mysql建立索引的使用办法及优缺点分析

    2024-01-23 08:48:15
  • sql基本查询语句介绍

    2008-05-21 13:58:00
  • Python Matplotlib 基于networkx画关系网络图

    2021-04-03 04:49:26
  • 页面中横排布局的思考

    2008-01-18 12:56:00
  • 远程连接mysql 授权方法详解

    2024-01-23 10:28:02
  • python 循环while和for in简单实例

    2021-12-11 03:16:48
  • Python编程实现的简单神经网络算法示例

    2022-01-06 05:53:17
  • Python中绑定与未绑定的类方法用法分析

    2021-08-06 22:56:54
  • python中实现精确的浮点数运算详解

    2022-12-27 07:08:27
  • Django-silk性能测试工具安装及使用解析

    2023-12-08 08:53:19
  • 微信小程序实现图片上传、删除和预览功能的方法

    2023-09-20 08:54:30
  • 手把手教你搭建python+selenium自动化环境(图文)

    2023-03-01 17:45:03
  • CentOS 7安装MySQL的详细步骤

    2024-01-25 19:59:17
  • Pytorch转onnx、torchscript方式

    2022-05-03 11:10:43
  • asp之家 网络编程 m.aspxhome.com