補充上一篇,嚴格模式下不同場景下函式引數名的區別
三、嚴格模式下不同場景的區別(函式引數名的區別)
1、引數名必須唯一
在嚴格模式下,要求命名函式的引數必須唯一。嚴格模式下重新命名引數被認為是語法錯誤。
示例程式碼如下:
// 開啟嚴格模式
'use strict'
function fun(a,a,b) {
console.log(a+a+b);
}
// 非嚴格模式下呼叫不會報錯,但嚴格模式下會報錯,引數名重複
fun(2,3,4);//10
2、arguments的不同
在嚴格模式下,arguments物件的行為也有所不同。
- 非嚴格模式下,修改形參的值也會反映到arguments物件中。
- 在嚴格模式下,形參與arguments物件是完全獨立的。
示例程式碼如下:
// 開啟嚴格模式
'use strict'
function fun(value) {
var value = '豬豬俠';
console.log(value);//豬豬俠 ->就近原則
console.log(arguments[0]);
}
fun('超人強');//非嚴格模式下,arguments物件獲取的值與形參有關。
3、arguments.callee()
在嚴格模式下,不能使用arguments物件的callee()方法。
- 非嚴格模式下,使用arguments物件的callee()方法,表示呼叫函式本身。
- 在嚴格模式下,使用arguments物件的callee()方法,結果丟擲異常。
示例程式碼如下:
'use strict'
function fun() {
console.log(arguments.length);//0
// 在嚴格模式下無法呼叫arguments的callee方法
console.log(arguments.callee);
}
fun()
4、函式宣告的限制
在嚴格模式下,只能在全域性域和函式域中宣告函式。
- 非嚴格模式下,任何位置宣告函式都是合法的。
- 在嚴格模式下,除在全域性域和函式域中宣告函式是錯誤語法。
示例程式碼如下:
// 開啟嚴格模式
'use strict'
// 在全域性作用域
function fn() {
// 在函式作用域
function n() {
}
}
// 在嚴格模式下,函式的定義只能在全域性作用域與函式作用域(不能在塊級作用域定義函式 )
for (var i=0;i<10;i++){
//ECMAScript 6新增 - 存在著塊級作用域
var v = 100;
function f() {//非函式作用域宣告函式,語法報錯
console.log('this is a function');
}
}
console.log(v);
f();
相關文章
- 嚴格模式和非嚴格模式區別模式
- js嚴格模式下的this指向,es6模組預設使用嚴格模式JS模式
- 函式引數 引數定義函式型別函式型別
- [原]不同場景下MySQL的遷移方案MySql
- 4.2 函式的外部引數名 [Swift教程]函式Swift
- [ Git ] 不同場景下如何使用「撤銷」操作Git
- my.cnf中[mysql]與[mysqld]下引數的區別MySql
- JS字串擷取函式slice(),substring(),substr()的用法 區別split()後期遇到補充JS字串函式
- 不同維度的拆分:物件導向和函式式的區別物件函式
- 詳解箭頭函式和普通函式的區別以及箭頭函式的注意事項、不適用場景函式
- 什麼是ConcurrentHashMap?不同JDK下ConcurrentHashMap的區別?HashMapJDK
- 嚴格模式模式
- Python 序列型別以及函式引數型別Python型別函式
- Python 函式中引數前面一個和兩個星號(**)的區別Python函式
- 面試— !Doctype的作用,嚴格模式和混雜模式的區別、以及如何觸發兩種模式面試模式
- MySQL自增列鎖模式 innodb_autoinc_lock_mode不同引數下效能測試MySql模式
- & 號和管道符號(|)在不同場景下的使用方法符號
- 解鎖「SOAR」在不同場景下的應用與實踐
- 從建構函式得到引數型別函式型別
- RocketMQ 在多 IDC 場景以及多隔離區場景下的實踐MQ
- JavaScript嚴格模式JavaScript模式
- JavaScript 中的 嚴格模式JavaScript模式
- async函式使用場景函式
- strcpy函式和memcpy函式的區別函式memcpy
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 直播影片美顏SDK在不同場景下的表現效果分析
- 函式的引數傳遞函式
- 程式中的函式引數函式
- 函式下函式
- 函數語言程式設計下的Iterator模式函數程式設計模式
- Javascript函式引數求值——Thunk函式JavaScript函式
- 函式基礎和函式引數函式
- [BUG反饋]除錯模式下函式U()的BUG除錯模式函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- 建構函式與普通函式的區別函式
- 箭頭函式與普通函式的區別函式
- # 普通函式和箭頭函式的區別函式
- 注意力機制下的啟用函式:自適應引數化ReLU函式