例を示します:
]
やってみるとわかります コードの意味は、関数を宣言してすぐに実行することです。JavaScript の変数スコープは関数に基づいているため、変数の汚染を避けることができますが、ここでビット演算子「~」がわかりにくいです。これを削除して再度実行すると、SyntaxError というエラーが報告されます。
その理由を説明する前に、まず JavaScript の 2 つの概念、関数宣言と関数式を明確にしましょう:
まず、関数宣言とは何かを見てみましょう:
外部 Js を導入する必要がある場合は、更新して実行する必要があります
]
[Ctrl A すべて選択 注:
外部 Js を導入する必要がある場合は、更新して
を実行する必要があります]
今すぐ記事の冒頭を振り返ってください。問題は、ビット演算子「~」を削除した後になぜエラーが報告されるのかということです。これは、構文解析の観点から、JavaScript では関数宣言の直後に括弧を使用することができないためです。一方、関数式にはこの制限はありません。関数宣言の前に「~」演算子を追加すると、構文パーサーは同様に、「!、, -」およびその他の演算子を関数式として扱うことができます。関数宣言も可能です。
[Ctrl A すべて選択 注:
外部 Js を導入する必要がある場合は、
を実行するために更新する必要があります]
構文解析の観点からは問題ないようですが、上記のコードには変数が導入されているため、既存の動作環境が汚染され、潜在的な問題が発生する可能性があります。
<script>
~function() {
alert("hello, world.");
}();
</script>[Ctrl A すべて選択 注: <script>
function() {
alert("hello, world.");
};
function foo() {
alert("hello, world.");
};
</script>外部 Js を導入する必要がある場合は、それを実行するために更新する必要があります <script>
var foo = function() {
alert("hello, world.");
};
</script>]<script>
var foo = function() {
alert("hello, world.");
}();
</script> <script>
(function() {
alert("hello, world.");
})();
</script>原則はわかりました。どんな書き方に出会っても、ザンガー修道士はもう混乱することはありません。