我有以下javascript代码:
function toggleHiddenOps(dir, tour = false){
// do stuff
}
我注意到它在Chrome和IE中突破(似乎在FF 27中工作)。如果我将上述内容更改为:
function toggleHiddenOps(dir, tour){
// do stuff
}
它解决了这个问题。在JS中声明这样的变量是否存在问题?或许我的问题实际上在别的地方?
感谢。
答案 0 :(得分:1)
此功能目前仅存在于FF中。它will be in ECMAScript6,所以期望它随着时间的推移开始出现在其他引擎中。
Chrome,IE,Opera和Safari在最新版本中不支持该语法。
一个好的解决方法是使用arg= typeof arg !== 'undefined' ? arg : defaultValue;
例如:
function multiply(a, b) {
b = typeof b !== 'undefined' ? b : 1;
return a*b;
}
multiply(5); // 5
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/default_parameters
答案 1 :(得分:0)
您不能使用PHP语法在JS中指定默认值。
公平地说,草案ECMAScript 6规范允许指定默认参数值,就像在PHP中一样,甚至在Firefox 15+中也支持这一点,但请注意,ES6本身的支持主要是实验性的,理论上可以在任何地方更改或删除点。
在未指定参数的情况下检查JS的面向未来/跨浏览器的方式如下:
function toggleHiddenOps(dir, tour) {
if ('undefined' === typeof tour) {
tour = 'Some default value';
}
// do stuff
}
答案 2 :(得分:0)
这在javascript中是非法的。
如果您想要默认false
:
function toggleHiddenOps(dir, tour){
tour = tour === void(0) ? false : tour;
// do stuff
}
如果你只关心它的错误:
function toggleHiddenOps(dir, tour){
// do stuff, tour equals undefined now if not passed 2nd param
}
答案 3 :(得分:0)
Javascript函数不支持默认参数,黑客攻击是:
function toggleHiddenOps(dir, tour){
tour = typeof tour === 'undefined' ? 'default value' : tour
console.log(dir)
console.log(tour)
}
toggleHiddenOps('dir')