1、什么是js 的严格模式
严格模式指的是js引擎以严格模式去执行,我们只要在代码前或者函数前添加“use strict”就可以开启严格模式了。在严格模式下对js代码的执行添加了一些限制,主要是为了保证代码在安全环境中执行,减少不必要的错误,为了消除js中的一些不严谨、不合理、不安全的地方,它代表了js一种更加合理、更加安全、更加规范的一个发展方向。
2、js严格模式的一些特点
严格模式下,变量必须声明再使用。
严格模式下,普通函数调用或匿名函数自调中的this不再默认指向window,而是undefined;
严格模式下,不支持arguments、caller、callee、with(会导致this指向更改);
严格模式下,拒绝重复的属性和参数;
严格模式下,局部的this必须被赋值、赋值什么就是什么。
严格模式下,拒绝重复声明
不允许不使用 var 关键字去创建全局变量,抛出 ReferenceError
不允许对变量使用 delete 操作符,抛 ReferenceError
不可对对象的只读属性赋值,不可对对象的不可配置属性使用 delete 操作符,不可为不可拓展的对象添加属性,均抛 TypeError
对象属性名必须唯一
函数中不可有重名参数
在函数内部对修改参数不会反映到 arguments 中
淘汰 arguments.callee 和 arguments.caller
不可在 if 内部声明函数
抛弃 with 语句
3、 typeof语法
typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。
4、typeof 的一些返回值
typeof运算符的返回类型为字符串,值包括如下几种:
1. ‘undefined’ —未定义的变量或值
‘boolean’ —布尔类型的变量或值
‘string’ —字符串类型的变量或值
‘number’ —数字类型的变量或值
‘object’ —对象类型的变量或值,或者null(这个是js历史遗留问题,将null作为object类型处理)
‘function’ —函数类型的变量或值