Javascript には括弧のセマンティクスが 5 つあります
セマンティクス 1、関数宣言時のパラメータリスト
次のようにコードをコピーします。
関数 func(arg1,arg2){
// ...
}
セマンティック 2。特定の制限効果を達成するためにいくつかのステートメントと組み合わせて使用されます。
次のようにコードをコピーします。
// for in と一緒に使用されます
for(obj の変数 a){
// ...
}
// if と一緒に使用されます
if(ブー){
//...
}
// while と一緒に使用
ながら(ブー){
// ...
}
// do while と一緒に使用されます
する{
// ...
}ながら(ブー)
注: if、while、および do while とともに使用すると、かっこは式の結果を暗黙的にブール値に変換します。 「JavaScript での暗黙的な型変換」を参照してください。
セマンティック 3、値 (実際のパラメーター) を渡すために new とともに使用されます
次のようにコードをコピーします。
// クラス Person が定義されており、name (名前) と age (年齢) の 2 つのフィールドがあると仮定します。
var p1 = 新しい人('ジャック',26);
セマンティック 4、関数またはオブジェクト メソッドの呼び出し演算子として (パラメーターが定義されている場合、実際のパラメーターもセマンティック 3 と同じ方法で渡すことができます)
次のようにコードをコピーします。
// 関数 func が定義されていると仮定します。
関数();
// オブジェクト obj が定義されており、 func メソッドがあると仮定します。
obj.func();
これは typeof 演算子です。この方法で使用することを好む人もいます
タイプ(xxx);
typeof の後の括弧はセマンティック 4 (つまり関数呼び出しではない) ではなく、後述するセマンティック 5 であることに注意してください。私は通常、次の括弧なしで typeof を使用します。
セマンティクス 5、強制的な式の評価
Semantic 5 に関しては、JSON を解析するために eval を使用することが誰もが最もよく知っています。
次のようにコードをコピーします。
関数 strToJson(str){
// eval の文字列の両側に強制演算子 () が追加されます
var json = eval('(' + str + ')');
json を返します。
}
もう 1 つの例は、匿名関数が自己実行によく使用されることです。
次のようにコードをコピーします。
(関数(){
// ...
})();