Javascript 您可以将条件添加到变量声明中吗?

Javascript 您可以将条件添加到变量声明中吗?,javascript,variables,declaration,Javascript,Variables,Declaration,这对我来说毫无意义,但我有一种感觉,我看到一个代码在使用: var abc=def|ghi; 我的问题是,这是否有效?我们可以在变量声明中添加条件吗?我想答案是否定的,但我有一次在代码中看到了类似的东西。是的,您可以向变量声明添加条件 你可以这样使用它 function greet(person) { var name = person || 'anonymouse'; alert('Hello ' + name); } greet('jashwant'); greet();​

这对我来说毫无意义,但我有一种感觉,我看到一个代码在使用:

var abc=def|ghi;

我的问题是,这是否有效?我们可以在变量声明中添加条件吗?我想答案是否定的,但我有一次在代码中看到了类似的东西。是的,您可以向变量声明添加条件

你可以这样使用它

function greet(person) {
    var name = person || 'anonymouse';
    alert('Hello ' + name);
}
greet('jashwant');
greet();​

如果
def
的值不为falsy(即非
false
null
未定义的
0
或空字符串),则为
abc
的值,如果不是,则为
ghi
的值

这相当于:

var abc;
if (def) abc = def;
else abc = ghi;
var abc = return (def == true) or (ghi == true)
这通常用于以下选项:

function myfunc (opts) {
    var mything = opts.mything || "aaa";
}
如果调用
myfunc({mything:“bbb”})
它将使用您给定的值。如果您不提供任何内容,它将使用
“aaa”

在这种情况下,为了让调用者完全跳过参数,我们还可以使用

opts = opts || {};

好吧,你看,这就像,你要么检查一个是不是真的。将返回真实的一个。:)

相当于:

var abc;
if (def) abc = def;
else abc = ghi;
var abc = return (def == true) or (ghi == true)

代码var
abc=def | | ghi

是同一件事吗

if (def) { //where def is a truthy value
   var abc = def;
} else {
   abc = ghi;
}
你想要像if语句这样的条件吗

if (xxx==="apple") { 
    var abc = def;
} else {
    abc = ghi;
}
作为三元运算符写入的是:

var abc = (xxx==="apple") ? def : ghi;

+1.如果“
def
的计算结果为true”,则可能更准确,因为如果是
0
,则空字符串,
false
等。然后
abc
将获得
ghi
的值。刚才看到了我昨天读到的一个实例(javascript)。即使第一个示例中的
def
为false,
abc
也不是全局的。我说的对吗?
abc
可以是全局的,这取决于它的定义。小心。您的答案意味着此操作始终指定布尔值。只有当
def
ghi
是布尔值时,才会出现这种情况。在所有情况下,
abc
将采用
ghi
(无论该值是什么)的值,除非
def
评估为true。如果
def
是“hello”,那么abc将是“hello”(而不是booelan)。如果
def
为false/empty/zero/undefined/等,且
ghi
为“world”,则
abc
将为“world”(同样,不是布尔值)。