JavaScript If 语句无法正常运行
JavaScript If statement not operating correctly
下面是我的代码,它总是返回IF语句,就好像它是假的一样。不应该是真的吗?
使用 IF 语句断言的变量:
var coloredUI = '';
var coloredText = '';
这是 IF 语句:
if (coloredText && coloredUI == '') {
} else {
}
在 JavaScript 中,值可以是"真实"或"虚假"。您将两个变量都设置为空字符串,这些字符串是"falsy"(没有字符 == false)。其他虚假值包括:
未定义、0、假、空
if
语句总是想要测试真实布尔结果的条件。如果你给它一个表达式,该表达式就会被计算,如果结果不是布尔值,JavaScript 引擎会强制它成为一个表达式。假值变为假值,真值变为真值,因此:
if(coloredText) {}
评估结果为:
if(false) {}
因为coloredText
被初始化为虚假值 ('')。而且由于您使用了短路逻辑 AND,因此两个表达式都必须为真,整个if
才能为真。但是,由于第一个语句被强制为 false,因此if
语句继续到 false 分支。
为了避免这种情况,您可以编写一个表达式来比较表达式,而不是单独强制表达式,如下所示:
if(coloredText == '') // true
这种隐式类型强制的概念也是 JavaScript 提供两种相等性测试机制的原因。举个例子:
var x = 0;
if(x == false)
这将导致true
,因为双等号表示与转换相等。false
被转换为一个数字(0
),然后对照数字(0
)进行核对,所以我们得到true
。
但是这个:
var x = 0;
if(x === false)
将导致false
的结果,因为三重等号表示严格相等,其中不发生转换,并且按原样比较两个值/表达式。
返回到原始方案。在检查功能支持时,我们经常利用这种隐式类型的强制。例如,较旧的浏览器不支持地理位置(它们不实现提供该功能的对象)。我们可以像这样测试支持:
if(navigator.geolocation)
如果navigator
对象没有 geolocation
属性,则表达式的计算结果将变为 undefined
(falsy),并且if
将进入其 false 分支。但是,如果浏览器确实支持地理位置,则表达式将计算为对象引用(真实),然后我们进入 true 分支。
空字符串(
''
) 是falsey
值
以下示例将测试两个值是否都包含真实值。
var coloredUI = '';
var coloredText = '';
if (coloredText && coloredUI) {
alert('if');
} else {
alert('else');
}
将这两个值作为''
进行测试
var coloredUI = '';
var coloredText = '';
if (coloredText == '' && coloredUI == '') {
alert('if');
} else {
alert('else');
}
真值和假值
if (coloredText == '' && coloredUI == '') {
} else {
}
if (coloredText == '' && coloredUI == '') {
} else {
}
if ((coloredText==='') && (coloredUI == '')){
} else {
}
或者,如果您想检查彩色文本中是否有值,请使用以下命令:
if ((coloredText) && (coloredUI == '')){
} else {
}
- Disqus的计数.js脚本在索引中无法正常运行.html与react.js网站
- 可以'无法使节点时间正常运行
- 我无法让脚本在不同的浏览器中正常运行
- 页面对象中的 for 循环未正常运行
- 样式使 JavaScript 代码无法正常运行
- 属性在我的自定义构造函数中无法正常运行 - Javascript
- 脚本点击Css显示属性更改不正常运行Asp.net
- Firebase在我的node.js应用程序中没有正常运行
- 如何在Node.js中获得服务器正常运行时间
- 幻灯片无法正常运行javascript
- Gruntfile 任务未正常运行
- JavaScript If 语句无法正常运行
- 弹出窗口在iPad safari浏览器中无法正常运行
- Javascript代码无法正常运行
- jQuery无法正常运行,立即打印警报
- 即使我评论Dog.prototype.constructor=Dog行,程序仍然可以正常运行,为什么
- 小提琴在单击链接时在结果面板中显示 JSFiddle 登录(而不是正常运行)
- 为什么我的数组在我的 savetime 函数中未定义,但在其他函数中正常运行
- 尝试编辑使用模板购买的表单,但我似乎无法使其正常运行
- Switch语句没有正常运行