JavaScriptの3-文法
8452 ワード
1、block
一般的には{}が含まれているコードブロックですが、jsはブロックスコープがないが、関数スコープ、グローバルスコープがあります.
2、var
5、for…in順序不確定 enumerableがfalseの時は を表示しません. for…inオブジェクト属性はプロトタイプチェーンの影響を受けます.
6、厳格モード
厳格なモードは特殊な実行モードで、一部の言語での不足を修復し、より強いエラーチェックを提供し、安全性を強化します. はwithを使用してはいけません. は、宣言されていない変数に値を割り当てることができません. アーグメンントは、パラメータの静的変数に変化する. 厳格なモードでは、形参報エラーを削除します.(1.co nfigrableはtrueであればSyntxErrを報告します.2.configrableはfalseであればType Errを報告します.) オブジェクトの字面量属性はエラーを繰り返します. 八進法禁止文字数 eval、argmentsがキーワードになり、変数、関数名として使用できません.違反したらSyntxErrror に報告します. eval独立作用ドメイン はwithを使用してはいけません. すべての変数は、暗黙的にグローバル変数を作成するのではなく、宣言されていない変数にエラーを報告するために宣言しなければなりません. evalのコードは、evalが存在する作用ドメイン変数、関数を作成することができません.evalのために単独の作用領域を作成し、evalが戻った時に廃棄します. 関数の中の特殊なオブジェクトアーグメンントは、厳密なモードではなく静的なコピーであり、アーグメンントを修正するか、または変形変形は相互に影響します. configrableを削除するとfalseにエラーが発生します.選択を無視するのではありません. 八進法の字面量を禁止します. eval、argmentsをキーワードとして、変数名または関数名として使用できません. 一般関数の呼び出し(オブジェクトメソッドの呼び出しではなく、appy/call/bindなどでthis指向を修正するのではなく)、thisはグローバルオブジェクトではなくnullを指す. appy/callを使用すると、nullまたはundefinedに入ると、thisはグローバルオブジェクトではなくnullまたはundefinedを指す. は、書き捨て不可能な属性を修正しようと試み、拡張不可能なオブジェクトに属性時報Type Errorを追加し、無視する代わりに. argments.caller、argments.calleeは を無効にしました.
一般的には{}が含まれているコードブロックですが、jsはブロックスコープがないが、関数スコープ、グローバルスコープがあります.
2、var
1
var a = b = 1;
例えば:1
2
3
4
5
6
function () {
var a = b = 1;
}
foo();
console.log(typeof a); // "undefined"
console.log(typeof b); // "number" b
3、try catch1
2
3
4
5
6
7
try {
throw "test";
} catch(ex) {
console.log(ex); // "test"
} finally {
console.log("finally"); // finally
}
4、functionfunction fd() { // do something }; //
var fe = function { // do something }; //
違い:関数宣言は声明の前に呼び出すことができ、エラーがありません.また、関数式は宣言前に呼び出すことができません.TypeErrがあります.5、for…in
1
2
3
4
5
var p;
var obj = {x:1, y:2};
for(p in obj) {
// obj key
}
いくつか注意が必要です.6、厳格モード
厳格なモードは特殊な実行モードで、一部の言語での不足を修復し、より強いエラーチェックを提供し、安全性を強化します.
1
2
3
4
5
6
7
8
9
10
11
12
// 1.
function func() {
// ps:ie ,
// func
;
} JavaScript - an>
// 2.
//
function func() {
}
厳格なモード:1
2
3
4
5
6
7
8
9
10
11
//
!function(a) {
// "use strict";
arguments[0] = 100;
console.log(a);
}(1);
// ps: , arguments[0] a , a 100,
// , !function(a){}(); arguments ,a undefined
// :
// 1) : 1, undefined
// 2) :
var obj = {x:1, x:2}; // SyntaxError
console.log(0123); //SyntaxError
1
2
3
4
5
6
7
8
9
10
!function() {
eval("val evalValue = 2;");
console.log(typeof evalValue);//number
}();
!function() {
;
eval("var evalValue = 2;");
console.log(typeof evalValue);//undefined, eval
}
厳格なパターンのまとめ: