【備忘録】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モードでのみ
エラーが出るものがあるかも。
以上、備忘録でした。