『 Vue小Case 』- Vue Prop中的 null vs undefined

本文探讨了Vue中prop属性值为null和undefined时的区别,以及它们如何影响default和required校验。当prop值为null时,default定义的值不会生效,而undefined则会。同时,null可以通过required: true的验证,但在类型校验中失败。文章通过Vue源码解析了这一现象,并引用了尤雨溪的解释,强调了与JavaScript设计保持一致的重要性。
摘要由CSDN通过智能技术生成

编者按:本文作者高峰,360奇舞团,前端开发工程师

前言:本文将引入两个Vue中比较特殊的使用场景,带领大家熟悉一下null和undefined的区别,然后再分析一下Vue中是怎么对Props做校验的,最后给出大佬是怎么解释的。

一直以来,笔者在使用Vue时,习惯于在需要表示prop属性未定义时,使用undefined,而不是null。因为“undefined才是没有值,null是有值,但是值为空的对象(注意不是空对象{})”。

基于这一习惯,笔者规避掉了很多问题,对此也没有深究。

直到最近,参与项目的一些同学习惯于指定null为初始值,我也没有强制性统一。根本原因是,我自己也觉得没什么,每个人都有自己的习惯,只要大的风格不出偏差就可以接受,毕竟项目紧嘛。

直到今天遇到了下面的场景,我才发现,原来这么做会有一些奇怪的小问题。

一、场景再现

1.1 场景一:prop的值是null,会使用default的值吗?

阅读以下代码,你觉得有问题吗?

HTML:

<div id="app">

  <list :items="null"></list>

</div>

JS:

Vue.component('list', {

  template: '<div>{ { typeof items }} { { items.join(',') }}</div>',

  props: {

    items: {

      type: Array,

      default() {

        return [1, 2, 3]

      },

    }

  }

})

new Vue({

  el: '#app',

});

上述的代码执行之后有问题吗?停顿5s思考一下,1、2、3、4、5。

好,我们来看下示例代码,这段代码执行之后会报错(记得开启控制台查看错误,因为是JS执行错误)。因为items最终的值是nu

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值