javascriptの下でfunctionはいくつかの結び目を宣言します。


機能 test(){return} 123;明らかにこれは関数宣言です。次のはvarです。 b=function(){return} 123}これはみんなが疑っています。声明ではないようです。関数に名前がないので、匿名の関数です。 b=function test(){return} 123}これは一体関数宣言ですか?はい、じゃないと答えます。var b=function test(){return} 123}以外のieの上の任意のjsでテストに行くことができます。test未定義エラーを報告します。 b=function test(){return} 123}alert(b)alert(test)functionが表示されます test(){…}のような関数toStringの結果、2番目のalertができるのか、それとも異常なのか、なぜここでfunctionができますか? test(){return} 123}声明ではなく、関数オブジェクトであり、引用をbに入れただけです。だから、宣言のように関数オブジェクトをtestの名前にデフォルトで結びつけることはできません。なぜ私はieテストを呼ばないのですか?alert(test)です。var b=function test(){return} 123}ieは関数を表示します。ieは比較的に愚かで、単独のfunction声明と=右の関数オブジェクトの区別ができません。また、ieはfunctionをサポートしています。 String.prototype.test(){…}という声明から、ieのjsが見えます。 バグは本当に多くなりました。ウィルソンがエス4を支持しないのも無理はないです。エス3.1を作らなければならないです。実は自分のバグ修正版です。