function Student(props) {
this.name = props.name || '匿名'; // 默认值为'匿名'
this.grade = props.grade || 1;
}
这里的||是什么意思啊,我看书上写的是 在boolean运算时,才出现这个表示或。 这里为什么就可以表示默认值什么的?
function Student(props) {
this.name = props.name || '匿名'; // 默认值为'匿名'
this.grade = props.grade || 1;
}
这里的||是什么意思啊,我看书上写的是 在boolean运算时,才出现这个表示或。 这里为什么就可以表示默认值什么的?
这个是短路运算,如果两边不为0.首先js会将||两边的值转成Boolean 类型,然后再算值,如果||返回true,则取前面的值 ,否则取后面的值。给你扩展一下,还有&&的短路运算,如果&&返回true,取后面的值,否则取前面的值
首先 明确几个问题
a = 5 || 3; // 5
a = 0 || 5; // 5
a = undefined || 5; // 5
a = 0 || 1 || 3; // 1
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》 上卷, 有专门说这个,很详细
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
|| 运算符
1.当前面为真时,无论后面是否真假都返回前面的值
2.当前面为假时,无论后面是否真假都返回后面的值
所以这里的
this.name = props.name || '匿名'
当有props.name传进来时,是有值的,所以会返回props.name
当没有props.name时,是undefind,为假,会返回后面的"匿名"
这样就达到了设置默认值的效果