首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这在js中有什么用呢?

这在js中有什么用呢?
EN

Stack Overflow用户
提问于 2011-11-21 16:05:05
回答 6查看 176关注 0票数 4

可能重复:

What does var x = x || {} ;

我在js中有这一行,它很简单,但我不确定最后一部分做什么- (xin || {})

代码语言:javascript
运行
复制
var xin = (function (name) {return name;}(xin || {}));

据我所知,鑫是一个对象构造函数,所以现在我可以创建辛的对象了。只是不太确定xin || {}会做什么。有人能指点我一下吗,谢谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-11-21 16:07:24

代码语言:javascript
运行
复制
xin || {}

与以下相同:

代码语言:javascript
运行
复制
xin ? xin : {};

或者,以更长的形式:

代码语言:javascript
运行
复制
if(xin) {
    return xin;
}
else {
    return {};
}

编辑: See linked duplicate question。jAndy很好地表达了这一点:

||是逻辑OR

表达式

代码语言:javascript
运行
复制
var x = x OR {};

应该会变得更明显。

如果x有一个falsy值(如nullundefined0""),我们将为x分配一个空对象{},否则只保留当前值。很长的版本看起来就像

代码语言:javascript
运行
复制
var x = x ? x : {};
票数 2
EN

Stack Overflow用户

发布于 2011-11-21 16:06:57

如果变量xin不是false (或未定义或null)或新对象({}),则该变量的值应归因于该变量的值;

例子:

代码语言:javascript
运行
复制
var name = xin || {};

这被翻译成:

代码语言:javascript
运行
复制
if(xin)
    var name = xin;
else
    name = {};

在javascript中,您可以使用条件运算符(||&&)来创建表达式。下面是一个例子:

代码语言:javascript
运行
复制
typeof f === 'function' && ((arguments.length ==  0 && f()) || f.apply({},arguments)) || g();

这个表达式可以翻译成以下内容:

代码语言:javascript
运行
复制
if(typeof f === 'function')
    {
        if(arguments.length == 0)
            f();
        else
            f.apply({},arguments);
    }
else
    g();

无论如何,这只是为了演示目的,您不应该使用用条件运算符构建的大型嵌套表达式,因为它非常不可读(因此很难维护)。

这种表达式通常用于初始化,如果您不想覆盖某个值,如果它已经存在的话。一个很好的例子是在多个js文件中使用名称空间。使用此技术(var namespace = namespace || {};),您可以在所有文件中共享相同的命名空间,而无需覆盖它。

票数 4
EN

Stack Overflow用户

发布于 2011-11-21 16:06:55

如果信是真实的,它会被评价为鑫,否则就会使用一个新的对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8214702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档