函数和默认参数,不工作在IE和Chrome
Javascript Functions and default parameters, not working in IE and Chrome
我创建了这样一个函数:
function saveItem(andClose = false) {
}
在Firefox中运行良好
在IE中,它在控制台上给出了这个错误:Expected ')'
在Chrome中,它在控制台中给出这个错误:Uncaught SyntaxError: Unexpected token =
两个浏览器都将错误源标记为函数创建行
您不能这样做,但是您可以这样做:
function saveItem(andClose) {
if(andClose === undefined) {
andClose = false;
}
}
通常被缩短为:
function setName(name) {
name = name || 'Bob';
}
更新
以上对于ECMAScript <= 5是正确的。ES6提供了建议的默认参数。所以上面的代码可以写成:
function setName(name = 'Bob') {}
这不是一种有效的ECMAScript语法,但对于Mozilla添加到该语言实现中的功能超集来说,这是一种有效的语法。
默认的参数赋值语法是很可能在ECMAScript 6中出现
Javascript不允许使用"default"说明符。
做你想做的事情的一个快速方法是改变:
function saveItem(andClose = false) {
}
到下面:
function saveItem(andClose) {
// this line will check if the argument is undefined, null, or false
// if so set it to false, otherwise set it to it's original value
var andClose = andClose || false;
// now you can safely use andClose
if (andClose) {
// do something
}
}
您提供的代码将无法在Chrome中运行
您使用了有效的ECMAScript 2015语法:
- MDN:默认参数。
- ES2015规范:默认值参数初始化器
在我看来,使用ES2015特性的最佳方式是将资源与Browserify或WebPack捆绑在一起,并使用Babel将ES2015转换为ES5。这样你就不用担心ES2015浏览器兼容性图表了。第一次开始是很痛苦的,但是值得。
在您的情况下,您有另一种选择来确保您的变量是布尔值:
function saveItem(andClose) {
andClose = true == andClose;
// ...
}
默认值为undefined
, true == undefined
=>false
,所以你的默认值将是false
:)
相关文章:
- IE/Chrome中未定义的函数,但Firefox中没有
- 滚动在Chrome中有效,但在Firefox或IE中无效
- CKeditor预览插件.js,为Chrome和IE进行编辑.因为它拒绝CSS样式
- 如何编写在Chrome和IE中正常工作的JavaScript
- Javascript/AAJAX在Opera中不起作用,在FF/IE/Chrome中完美工作
- JavaScript可以在IE+Chrome中使用,但不能在FF中使用
- 在 Java 中使用 IE/Chrome HTML 渲染器或使用 JavaScript 存储文件
- Javascript - 附加到文本区域值 - IE Chrome 和 Firefox
- Src 更改在 Firefox 中工作,而不是在 IE/Chrome 中
- HTML5游戏-工作在IE, Chrome.在FireFox中失败…直到我导航到一个.mp3文件…然后它才工作
- JQuery脚本,适用于Firefox,而不是在IE, Chrome
- jquery不工作在IE, Chrome,工作在FF
- 创建CSV并打开JS不工作在IE, Chrome
- OpenLayers 3旋转示例在Win32触摸设备上的IE/Chrome嵌入式WebBrowser控件中表现不同
- preventDefault()对一个多选择,不同的行为在Firefox - IE - Chrome
- Js工作在IE, Chrome,但不是Firefox
- Ie /chrome检查器导致重画
- 展开嵌套无序列表和水平显示在IE/Chrome/FF
- Firefox与IE/Chrome中的事件处理程序
- Firefox将文本叠加在错误的位置,而不是在Firefox中工作(在IE, Chrome和safari中很好)