es6函数之严格模式用法实例分析
作者:wangliang_001 发布时间:2023-08-09 06:15:40
标签:es6,函数,严格模式
本文实例讲述了es6函数之严格模式用法。分享给大家供大家参考,具体如下:
从es5开始,函数内部可以设定为严格模式。
function doSomething(a, b) {
'use strict'
// code
}
es2016做了一点修改,规定只要函数参数使用了默认值,解构赋值,或者扩展运算符,那么函数内部就不能显示设定为严格模式,否则会报错。
// 报错
function doSomething(a, b = a) {
'use strict'
// code
}
const doSomething = function({a, b}) {
'use strict'
// code
}
const doSomething = (...a) => {
'use strict'
// code
}
const obj = {
doSomething({a, b}) {
'use strict'
// code
}
}
这样规定的原因是,函数内部的严格模式,同时适用于函数体和函数参数。但是,函数执行的时候,先执行函数参数,然后再执行函数体,这样就有一个不合理的地方,只有从函数体之中,才能知道参数是否应该以严格模式执行,但是参数却应该先于函数体执行。
function doSomething(value = 070) {
'use strict'
return value
}
上面代码中,参数value的默认值是八进制数070,但是严格模式下不能用前缀0表示八进制,所以应该报错,但是实际上,javascript引擎会先成功执行value = 070 ,然后进入函数内部,发现需要用严格模式执行,这时才会报错。
虽然可以先解析函数体代码,再执行参数代码,但是这样无疑就增加了复杂性。因此,标准索性禁止了这种用法,只要参数使用了默认值,解构赋值,或者扩展运算符,就不能显示指定严格模式。
两种方法可以规避这种限制。第一种是设定全局性的严格模式,这是合法的。
'use strict'
function doSomething(a, b = a) {
// code
}
第二种是把函数包在一个无参数的立即执行函数里面。
const doSomething = (function() {
'use strict'
return function (value = 42) {
return value
}
})
希望本文所述对大家JavaScript程序设计有所帮助。
来源:https://blog.csdn.net/qq_29055201/article/details/86073149


猜你喜欢
- Options Indexes FollowSymLinks ExecCGI  
- 有一个比较有意思的传参方式:比如在 demo1.py 中指定 action='store_true'的时候:parser.a
- 近期遇到一个需求,就是用PySide2做出一个GUI,并且要将后台使用Matplotlib绘制的图显示在界面上。自己琢磨了蛮久,网上也搜了不
- 本文实例讲述了PHP简单实现冒泡排序的方法。分享给大家供大家参考,具体如下:<?php$files = array("fil
- numpy中有两个函数可以用来读取文件,主要是txt文件, 下面主要来介绍这两个函数的用法第一个是loadtxt, 其一般用法为numpy.
- 有关itchat接口的知识,小编是初步学习,这里先给大家分享一段代码用法示例。sudo pip3 install itchat今天用了下it
- 今天遇到一个问题,原有生产系统正在健康运行,现需要监控一张数据表,当增加数据的时候,给管理员发送邮件。领到这个需求后,有同事提供方案:写触发
- phpqrcode类库官网下载地址: https://sourceforge.net/projects/phpqrcode/1.我们先看看p
- //获得视频文件的缩略图function getVideoCover($file,$time,$name) { &nb
- 分为服务端和客户端,要求可以有多个客户端同时操作。客户端可以查看服务器文件库中有什么文件。客户端可以从文件库中下载文件到本地。客户端可以上传
- 这里分析了php的简单防盗链实现方法。分享飞大家供大家参考。具体如下:index.php页面如下:<html><head&
- 本文实例讲述了mysql存储过程原理与用法。分享给大家供大家参考,具体如下:本文内容:什么是存储过程存储过程的创建存储过程的使用查看存储过程
- 一. 元组元组是Python中的一个内置的数据结构,它是一个不可变的序列,所谓的不可变序列就是不可以进行增删改的操作。1.1 元组的创建元组
- 最近在代码评审的过程,发现挺多错误使用eval导致代码注入的问题,比较典型的就是把eval当解析dict使用,有的就是简单的使用eval,有
- 本文实例讲述了python实现简单ftp客户端的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/python# -*-
- 利用numpy、matplotlib、sympy绘制sigmoid、tanh、ReLU、leaky ReLU、softMax函数起因:深度学
- 数组元素添加、删除和修改数组也是一个可变类型,可以对数组中的元素进行添加、删除和修改,本文详细介绍了对数组元素的添加和删除的操作,以及这两种
- 有2个方法 一、可以修改my.ini 配置参数(linux下面是 my.cnf); [quote][client] port=3306 de
- replace 方法返回根据正则表达式进行文字替换后的字符串的复制。stringObj.replace(rgExp, replaceText
- 1.调整内存 sp_configure 'show advanced options',1 GO RECONFIGURE G