分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

js的严格模式

发布时间:2023-09-06 01:57责任编辑:董明明关键词:js

什么是严格模式?

使JS编码更加规范化的模式,消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为

怎么使用?

直接添加下面的这句字符串就可以了,这种语法可以向后兼容,如果是不支持严格模式的javascript引擎,就会直接当成是一个未赋值的字符串字面量,会直接忽略,支持的引擎就会开启严格模式

‘use strict‘

说明:

1.在全局作用域使用的话,那整个js脚本就会开启这种模式

2.如果是只在函数内部使用的话,那么就只是该函数内部开启而已

function doSomething(){ ?‘use strict‘ ???// 其他代码 ?}

变量

1. 在严格模式中什么时候创建变量以及怎么创建变量都是有限制的.首先,不允许意外创建全局变量.在非严格模式下是可以像下面这样创建全局变量,但是严格模式中是不可以的

// 未声明变量// 非严格模式:创建全局变量// 严格模式 :抛出referenceEror错误

2.在严格模式下,对变量名也是有限制.特别的,不能使用implements,interface,let,package,private等保留字作为变量名,用这些变量命名的话,都会导出语法错误

对象

在严格模式下 操作对象比在非严格模式下更容易导致错误,下面几种情形会导致语法错误

1.为只读属性赋值会抛出TypeError

2.对不可配置的属性使用delete 操作符会抛出TypeError

3.对不可扩展的对象添加属性会抛出TypeError

函数

在严格模式下,要求命名函数的参数必须是唯一的

// 重命名参数的// 非严格模式:没有错误,只能访问第二个参数,如果要访问第一个参数,就必须通过arguments// 严格模式语法错误function sum(num,num){ ??//do something ?????}

在严格模式下arguments对象的行为也有所不同.在严格模式下,修改命名参数的值也会反映到argument对象中,但是在严格模式下这两个值是完全独立的

function ?showValue(value){ ?value = ‘foo‘ ?console.log(value) ?console.log(arguments[0]) // 非严格模式 : ‘foo‘ ?严格模式 :‘hello‘ ???} ?????showValu(‘hello‘) ???????????????????????????????

 函数

在严格模式中,函数的参数必须唯一

// 重名的参数
// 非严格模式中,没有错误,只能访问第一个参数
// 严格模式 :抛出错误 ?Uncaught SyntaxError: Duplicate parameter name not allowed in this context
function sum(num,num){ ???‘use strict‘ ???// do something ?}

arguments对象

在非严格模式中,修改命名参数的值也会反应到arguments对象中,而严格模式坐下,这两个值是完全独立的

// 修改命名参数的值// 非严格模式:修改会反应到arguments中// 严格模式中不会反应到arguments中function sum(num,num2){ ???‘use strict‘num=3 ??console.log(arguments[0],num2)// 严格模式下输出为1,2 非严格模式下输出为3,2}sum(1,2)

js的严格模式

原文地址:https://www.cnblogs.com/cythia/p/9084314.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved