js中语法中一个问题

function Student(props) {
    this.name = props.name || '匿名'; // 默认值为'匿名'
    this.grade = props.grade || 1; 
}

这里的||是什么意思啊,我看书上写的是 在boolean运算时,才出现这个表示。 这里为什么就可以表示默认值什么的?

阅读 3.3k
7 个回答

|| 运算符
1.当前面为真时,无论后面是否真假都返回前面的值
2.当前面为假时,无论后面是否真假都返回后面的值

所以这里的
this.name = props.name || '匿名'
当有props.name传进来时,是有值的,所以会返回props.name
当没有props.name时,是undefind,为假,会返回后面的"匿名"

这样就达到了设置默认值的效果

这个是短路运算,如果两边不为0.首先js会将||两边的值转成Boolean 类型,然后再算值,如果||返回true,则取前面的值 ,否则取后面的值。给你扩展一下,还有&&的短路运算,如果&&返回true,取后面的值,否则取前面的值

或的逻辑运算符,顾名思义,如果前面的没定义或者为空,就取后面的,如果前面一旦有值了,就取前面的,不执行后面啦。
觉得还行,点赞哦~

首先 明确几个问题
a = 5 || 3; // 5
a = 0 || 5; // 5
a = undefined || 5; // 5
a = 0 || 1 || 3; // 1

所以如果props.nameinvalid即bool值为False,自然取了后面的值啊

||相当于三目运算,如果props.name值为undefined,则赋值‘匿名’

function Student(props) {
    this.name = props.name || '匿名'; // 默认值为'匿名'
    this.grade = props.grade || 1; 
}

通常是这样调用,

var obj1 = {
    name: 'Lee',
    grade: 1
};

var obj2 = {
    name: '',
    grade: 1
}

var s1 = new Student(obj1);

var s2 = new Student(obj2);

s1.name; // 'Lee'

s2.name; // '匿名'

就是当你存入的对象没有这个值, 它会显示一个默认的值;

如果你问|| 为什么会这样,是强制转换类型导致的结果;

可以看那本《You-Dont-Know-JS》 上卷, 有专门说这个,很详细

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题