我的函数有一个默认值,如下所示:
function f(a, b = 'something') {
//do stuff
}
这很好用,但如果我尝试使用在线相关应用程序缩小我的JS文件,则会出现错误:
错误:意外的令牌运算符'=',预期的punc','
据我所知,使用=
设置default value in Javascript是合法的,为什么我会收到此错误?
我是否必须在函数体中定义默认值?
答案 0 :(得分:13)
使用=
为Javascript中的功能参数设置默认默认值是ES6功能,目前仅支持Chrome 49和Firefox 15.0:
由于浏览器支持有限,很少(如果有的话)缩小器已经支持此功能。
你可以像这样设置默认参数:
function f(a, b) {
b = typeof b === 'undefined' ? 'something' : b;
//do stuff
}
您可以使用像Babel这样的转录程序将ES6代码转换为旧版浏览器& minifiers明白。
答案 1 :(得分:2)
Default parameters是EcmaScript的新功能,附带ES6(官方称为ES2015)。
大多数缩放器都不是最新的。不过,您可以在大多数ES6中使用#harmony branch of uglifyjs。
这就是说,因为它们的支持仍然有限,除非
,否则默认参数在浏览器中不可用如果您尚未准备好使用其中一种解决方案,请注意所有MDN页面的"Browser Compatibility"。
答案 2 :(得分:1)
你如何缩小?如果您使用gulp之类的内容,则可以使用pipe()
链接,例如:
gulp('src.js').pipe(babel()).pipe(minify());
另一方面,您可以使用旧式“默认值”:
function (a, b) {
b = b || 'default';
}
答案 3 :(得分:0)
试试这个:
function someFunction(a,b){
a=(a=='bool condition here':a,'default value');//a is a optional parameter variable now with a default value
b=(b=='bool condition here':b,'default value');//b is a optional parameter variable now with a default value
}