JS严格模式知识点总结


Posted in Javascript onFebruary 27, 2018

所谓严格模式其实就是一个不会赋值给任何变量的字符串 “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属性,就会报错。

 

Javascript 相关文章推荐
Prototype 学习 工具函数学习($A方法)
Jul 12 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
Jan 06 Javascript
javascript对select标签的控制(option选项/select)
Jan 31 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
简单实现限制uploadify上传个数
Nov 16 Javascript
Bootstrap Table使用方法解析
Oct 19 Javascript
jQuery学习笔记之入门
Dec 14 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 27 Javascript
总结js函数相关知识点
Feb 27 #Javascript
详解jQuery中的isPlainObject()使用方法
Feb 27 #jQuery
详解Vue Elememt-UI构建管理后台
Feb 27 #Javascript
详解react-native WebView 返回处理(非回调方法可解决)
Feb 27 #Javascript
Vue2.5通过json文件读取数据的方法
Feb 27 #Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 #Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
Feb 27 #jQuery
You might like
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
PHP强制转化的形式整理
2020/05/22 PHP
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
Python实现简单HTML表格解析的方法
2015/06/15 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
python中列表的含义及用法
2020/05/26 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
为什么是 Python -m
2020/06/19 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
银行求职推荐信范文
2013/11/30 职场文书
材料物理专业个人求职信
2013/12/15 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
拾金不昧表扬信
2015/01/16 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server