我正在尝试解决wordpress中的问题并成为一个菜鸟,我在面对以下代码时感到困惑(粗体的最后一部分由typeof组成)。有人能用简单的英语向我解释一下吗?
<input id="et_pb_number" type="text" class="regular-text" value="<%= typeof( et_pb_number ) !== 'undefined' ? et_pb_number : '' %>" />
根据我的理解,这是否意味着某些事情(假设javascript)将检查变量的类型(et_pb_number)并查看它是否未定义,然后接下来会发生什么?
如果我不想让它检查价值的类型,我该怎么办?答案 0 :(得分:0)
周围部分与typeof没有直接关系。这是Ternary Operator expression ? when-true : when-false
这两个完全一样:
// ternary form
var test = typeof( et_pb_number ) !== 'undefined' ? et_pb_number : '';
console.log(test);
// if else block form
var test;
if (typeof et_pb_number !== 'undefined') {
test = et_pb_number;
} else {
test = "";
}
console.log(test);
Ternary运算符存在于许多编程语言中,并且在技术上可以完全像if / else一样使用 - 但要小心!这是(正如你自己经历过的)有时难以阅读。一种惯例是,仅使用它来根据某些条件返回一个或另一个(在您的示例中以这种方式使用它)。从某种意义上说:只有在除了返回一个值之外没有副作用的情况下,才应该(通常)使用它。
你可以在技术上完全做到这一点,但我不会推荐它(再次:出于可理解的原因。从技术上来说它很好):
// don't do this (unless you have a really really really good reason.
var someValue = true;
someValue ? $('body').html('Hello') : $('body').html('World')
这个例子将直接改变外部世界。