ひとことブログ

短文ブログです。自分のtwitterからの転載もあります。気分で長文になるかもしれません。

【備忘録】javascriptのstrictモードでは関数の中で関数宣言ができない、と誰かが言った

お疲れ様です。curonogiです。

 

今日は備忘録です。

 

やばいエラーが帰る直前に起こって、でもテンションが上がっていたので何とか解決できました。

 

■ 症状:

javascriptの某プラグインが、chromeでは動くがfirefoxでは動かない

 

■ 原因:

javascriptがstricttモードで書かれていたため、

プラグインの一部分がエラーを起こしていた。

具体的には、関数内で関数宣言をしていたので

エラーが起きていた。

 

■ 概説

return function (){
    function xxx(a,b,c){

        xxx xxx  xxx ....

    }
}

 

いわゆるクロージャというヤツなのか、

関数の中から関数を宣言して、

それがstrictモードでsyntaxエラーになっていた。

 

■ 修正

return function(){

   var xxx = function (a,b,c){

       xxx xxx xxx .....

    }

}

 

関数宣言⇒関数式(var xxx = function(){ ... } )

これだと通りました。

 

あやうく、"use strict"の方を

コメントアウトするところでした…

(テストで一回はコメントアウトしましたが)

 

どこに影響があるかわからないからそれはできなかったわけで

解決したからよかったですが、

他のライブラリにも、もしかしたらstrictモードでのみ

エラーが出るものがあるかも。

 

以上、備忘録でした。