我看到了这个帖子,但我没有看到JavaScript特定的例子.有一个简单string.Empty的JavaScript可用,还是只是检查的情况""?
如何在JavaScript中验证对象的存在?
以下作品:
if (!null)
alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
if (!maybeObject)
alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)
错误:
maybeObject没有定义.
我想要:
document.createElement('div') //=> true
{tagName: 'foobar something'} //=> false
Run Code Online (Sandbox Code Playgroud)
在我自己的脚本中,我曾经只是使用它,因为我从来不需要tagName作为属性:
if (!object.tagName) throw ...;
Run Code Online (Sandbox Code Playgroud)
因此,对于第二个对象,我想出了以下作为快速解决方案 - 主要是有效的.;)
问题是,它取决于执行只读属性的浏览器,而不是所有人都这样做.
function isDOM(obj) {
var tag = obj.tagName;
try {
obj.tagName = ''; // Read-only for DOM, should throw exception
obj.tagName = tag; // Restore for normal objects
return false;
} catch (e) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
有一个很好的替代品吗?
当我想检测IE时,我使用此代码:
function getInternetExplorerVersion()
{
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
msg = "You are using IE " + ver;
}
alert( msg );
}
Run Code Online (Sandbox Code Playgroud)
但IE11正在返回"你没有使用Internet Explorer".我该如何检测它?
debugging internet-explorer browser-detection forward-compatibility internet-explorer-11
我绝不是Javascript的专家,但我一直在阅读Mark Pilgrim的"潜入HTML5"网页,他提到了一些我想要更好理解的内容.
他说:
最后,使用双负技巧将结果强制为布尔值(true或false).
function supports_canvas() {
return !!document.createElement('canvas').getContext;
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够更好地解释这一点我会很感激!
可能重复:
什么是!! (不是)JavaScript中的运算符?
什么!! 运算符(双惊叹号)在JavaScript中意味着什么?
所以我正在调试一些代码并遇到这个:
var foo.bar = 0; // this is actually passed from another function, adding it for context
function(foo) {
var someVar = !!foo.bar;
if (foo.bar) {
// ..stuff happens
} else {
// .. something else happens
}
}
Run Code Online (Sandbox Code Playgroud)
好的,我的问题是什么意思!!?所有这一切都在做0 === false.
与之相比,使用它有什么好处boolean(foo.bar)?
foo.bar可以在if中进行评估,因为0 === false已经,所以为什么要进行转换?(someVar不会在其他任何地方重复使用)
如何针对某些情况(如Internet Explorer特定的CSS或特定于Internet Explorer的JavaScript代码)仅定位Internet Explorer 10?
我试过这个,但它不起作用:
<!--[if IE 10]> <html class="no-js ie10" lang="en"> <![endif]-->
<!--[if !IE]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
Internet Explorer 10忽略条件注释并使用<html lang="en" class="no-js">而不是<html class="no-js ie10" lang="en">.
html javascript css conditional-comments internet-explorer-10
我遇到过这段代码
function printStackTrace(options) {
options = options || {guess: true};
var ex = options.e || null, guess = !!options.guess;
var p = new printStackTrace.implementation(), result = p.run(ex);
return (guess) ? p.guessAnonymousFunctions(result) : result;
}
Run Code Online (Sandbox Code Playgroud)
并不禁想知道为什么双重否定?是否有另一种方法可以达到同样的效果?
(代码来自https://github.com/eriwen/javascript-stacktrace/blob/master/stacktrace.js)
这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接