所以看了一下之后,我发现console.log()可以炸毁IE9。 所以我不能在我的代码中留下任何东西,就是这样,我能在这做什么?
我的data_box显示用户输入的一些文字。但是,如果没有文字,我想调用showMsg(),它会创建一个带有一些文本的新框,“No Text Here”。
(data_box.length) ? console.log('') : showMsg();
如果data_box存在,我可以用什么替代方法替换'console.log('')'来告诉三元函数不执行任何操作?
答案 0 :(得分:2)
为此目的使用console.log
没有合理的理由。
如果您不需要else
(在某些情况下比三元运算符更短),您可以避免三元运算。
if(!data_box.length){ showMsg()}
如果你想完全使用三元运算符,你可以这样做:
data_box.length? null : showMsg();
或者如果你想要一个绝对的函数(我没有看到任何正当理由......但这只是一个练习),你可以用这种方式声明一个函数doNothing
:
function doNothing() {}
和
(data_box.length)? doNothing() : showMsg();
或没有功能退化:
data_box.length? (function() {})() : showMsg();
或再次:
data_box.length || showMsg();
依旧......: - )
答案 1 :(得分:1)
最简单的方法是编写自己的console.log
函数,如果浏览器没有提供,请使用它。
window.console = window.console || { log: function () { } };
...但在将代码转换为生产之前从代码中删除调试例程会更好。
答案 2 :(得分:0)
我已经为您提供了几行代码以使其正常工作,但是关注博客在解决该问题方面做得很好。请阅读本文
http://patik.com/blog/complete-cross-browser-console-log/
答案 3 :(得分:0)
至于我自己,我已经停止直接使用console.log()
。它太多了!
我有自己的log()
功能:
function log() {
var arg = Array.prototype.slice.call(arguments);
if (console && console.log) {
console.log.apply(console, arg);
} else {
for (var i = 0; i < arg.length; i++) alert(arg[i]);
}
}
然后你可以打电话给它:
log('test', {}, ['test', 'hello']);
在ie中,它会弹出3个警告:'test', [object Object], 'test,hello'
要“如果真的没有做什么”,你可以这样做:
(data_box.length) || showMsg();
但实际上,最好使用if
:
if(!data_box.length) showMsg();