null 比undefined更安全,在实际应用中,两者的语义上面意义大于逻辑上的意义,这两个家伙很有用,为变量本身提供了两个状态。
0
想要理解undefined,先要理解null,null好比桌子上有一个水杯,但是水杯里没有水,而undefined表示空的水杯被拿走了。
然后反过来想,桌子上什么都没有,放了水杯,再放水杯里加水,可以表示一个周期。
所以在初始化一个变量时,赋值为null可读性更好。
考虑下面的需求,如果一条数据没有,则显示暂无数据,否则展示数据。
模板如下
<template>
<div id="test-vue-id">
<template v-if="list.length > 0">
<div v-for="(item,index) in list" :key="index">{{index}}</div>
</template>
<div v-else>暂无数据</div>
</div>
</template>
<script>
export default {
name: "test_vue",
data() {
return {
list: []
};
},
mounted() {
setTimeout(() => {
this.list = [1, 2, 34];
}, 1000);
}
};
</script>
会先显示暂无数据,再显示内容,如果将list初始为null,加上相应的逻辑判端就好了。
<template v-if="list &&list.length > 0">
<div v-for="(item,index) in list" :key="index">{{index}}</div>
</template>
<div v-if="list && list.length === 0">暂无数据</div>
1
undefined == null //true
undefined === null // false
上面两个表达式是语言层次的定义,前者表示JS允许在一些情况将两者等同处理,后者则是为了更严格的区分。
console.log(JSON.stringify(null)); //字符串 null
console.log(JSON.stringify(undefined)); // undefined
console.log(JSON.parse(null)); //null
console.log(JSON.parse("null")); //null
// console.log(JSON.parse(undefined));//报错
console.log(JSON.stringify([1, undefined, null])); //[1,null,null]
console.log([1, null, undefined].join()); //1,,
网友评论