補充上一篇,嚴格模式下不同場景下函式引數名的區別
三、嚴格模式下不同場景的區別(函式引數名的區別)
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();
相關文章
- 嚴格模式和非嚴格模式區別模式
- 嚴格模式下this的指向模式
- 嚴格模式下變數宣告注意點模式變數
- 嚴格模式下對變數宣告的影響模式變數
- 嚴格模式下this的指向問題模式
- 嚴格模式對parseInt()函式的影響模式函式
- javascript嚴格模式下eval()的變化JavaScript模式
- js嚴格模式下的this指向,es6模組預設使用嚴格模式JS模式
- 嚴格模式下對於this指向的影響模式
- javascript嚴格模式下的8點規則JavaScript模式
- 不同場景下 MySQL 的遷移方案MySql
- 函式索引的兩個應用場景示例(下)函式索引
- 函式引數 引數定義函式型別函式型別
- [原]不同場景下MySQL的遷移方案MySql
- Swift4.0 函式引數(內部外部引數和下劃線在函式的作用)Swift函式
- Swift 1.1語言函式引數的特殊情況本地引數名外部引數名Swift函式
- 4.2 函式的外部引數名 [Swift教程]函式Swift
- 反射如何獲取函式的引數名反射函式
- 【函式引數】Oracle 11g中使用“=>”顯式指明函式引數名與引數值的對應關係函式Oracle
- 函式定義、函式的引數、函式的預設引數函式
- Swift學習筆記(三十)——函式的內部引數名和外部引數名Swift筆記函式
- my.cnf中[mysql]與[mysqld]下引數的區別MySql
- 嚴格模式模式
- 1 函式極限的嚴格定義函式
- Oracle升級中的引數補充Oracle
- 詳解箭頭函式和普通函式的區別以及箭頭函式的注意事項、不適用場景函式
- php 的函式引數值型別限定PHP函式型別
- php的函式引數值型別限定PHP函式型別
- 面試— !Doctype的作用,嚴格模式和混雜模式的區別、以及如何觸發兩種模式面試模式
- 不同維度的拆分:物件導向和函式式的區別物件函式
- javascript的函式的引數是區域性變數JavaScript函式變數
- JS字串擷取函式slice(),substring(),substr()的用法 區別split()後期遇到補充JS字串函式
- & 號和管道符號(|)在不同場景下的使用方法符號
- 解鎖「SOAR」在不同場景下的應用與實踐
- JavaScript嚴格模式JavaScript模式
- JavaScript 嚴格模式JavaScript模式
- JS '嚴格模式'JS模式
- 歸檔模式下四種完全恢復的場景模式