首页 > 解决方案 > 对于即将从 GET 响应接收其值的属性,我应该使用 Undefined 或 Null 作为默认值吗?

问题描述

假设我想呈现产品信息,但是必须首先通过 GET 请求,以便我可以将响应分配给产品。我的问题是,在 中data(),product 的默认值应该是 undefined 还是 null,有什么区别吗?

<template>
    <div>
        {{ product }}
    <div>
</template>

<script>
import axios from "axios"

export default {
    data(){
        return{
            product: undefined,
            productId: this.$route.params.productId
        }
    },
    methods:{
        async getProduct(){
            let response = await axios.get("/product/" + this.productId)
            this.product = response.data.product
        },
    },
    mounted(){
        this.getProduct()
    }
}
</script>

标签: javascriptvue.jsvuejs2

解决方案


问题的“应该是”部分没有答案,因为这是一个见仁见智的问题,但对比两者之间的差异和共同点可能会有所帮助。

undefined

Undefined 是 JavaScript 中的一种数据类型,具有单个值,undefined并且是

  • 如果没有指定其他返回值,则默认从函数返回,
  • 当读取一个从未初始化过的变量时,
  • 读取从未设置过的对象的属性时(包括其下标是 Array 对象的属性的数组条目),并且
  • 当访问已显式设置为的变量、属性或函数返回值时,undefined可能是因为它毕竟是一种数据类型。

未定义的值被视为false比较语句或三元?表达式,不包括严格的相等比较null === false

JSON 中不支持未定义的数据类型:在将数据对象序列化为 JSON 文本时undefined转换为。null

null

Null 也是具有单个值的 JavaScript 数据类型nullundefined在许多方面,它与重要的区别相似:

  • null默认情况下不会出现值,并且必须始终显式分配给变量、属性或从函数返回。
  • null将数据对象序列化为 JSON 时支持的值。
  • null具有“无对象”的历史意义或类似于数学中的空集phi的空对象类。

关于您的使用选择,初始化productundefined突出显示该值尚未获得,但也有可能被解释为undefined在要求返回时返回的函数中的错误product。返回null解决任何“这不是错误”的问题,并且是公认的做法。


推荐阅读