undefined是否会变为null原理解析

 更新时间:2023年02月10日 08:45:13   作者:我的div丢了肿么办  
这篇文章主要为大家介绍了undefined是否会变为null原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

echarts 会将 series data中的数据并不是你想的那样简单

我们很多小伙伴都使用过echarts。

然后 series:[{  data:[]  }] 中的数据可能并没有我们想的那样简单

为什么会这样说:因为你看下面这个例子绝对会然你有所收获。

series data 中的数据会自动发生变化吗?

<template>
  <div>
    <!-- 第1处:小伙伴们觉得这里数组中的值是否是
      [undefined, undefined, undefined, undefined,
      undefined, undefined, undefined]
    -->
    <h4>{{ objInfo.data1 }}</h4>
    <div id='demo1'></div>
  </div>
</template>
<script>
import echarts from 'echarts'
export default {
  data() {
    return {
      objInfo: {
        data1: [undefined, undefined, undefined, undefined,
        undefined, undefined, undefined],
        xdata1: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
      }
    }
  },
  mounted() {
    var myChart1 = echarts.init(document.getElementById("demo1"));
    let option1 = {
      xAxis: {
        type: 'category',
        data: this.objInfo.xdata1
      },
      yAxis: {
        type: 'value'
      },
      series: [
        {
          data: this.objInfo.data,
          type: 'line',
          smooth: true
        }
      ]
    };
    //第2处:小伙伴们觉得这里应该输出的数组的值是什么呢?
    console.log('控制台输入的数据', this.objInfo.data1)
    myChart1.setOption(option1); 
  }
}
</script>

大家觉得页面中

第1处: <h4>{{ objInfo.data1 }}</h4> 数组中的值是否是 undefined ?

很多小伙伴都会觉得这里应该是 

[undefined, undefined, undefined, undefined,
undefined, undefined, undefined] 是这样还是不是这样 ?

第2处:小伙伴们觉得这里应该输出的数组的值是什么呢?

console.log('控制台输入的数据', this.objInfo.data1)
[undefined, undefined, undefined, undefined, 
undefined, undefined, undefined] 是这样还是不是这样 ?

小伙伴们想好结果了吗? 如果想好了。请看下面的图片

为什么会series data 中 undefined 会变为 null

有的小伙伴会说:是不是echarts底层在更改了数据?
有可能,我们使用watch去监听一下,如果更改数据肯定会被我们监听到
watch: {
  "obj.data1": function (newval, oldval) {
    console.log('oldval', oldval)
    console.log('newval', newval)
  },
  deep: true,
},

通过上面的图片我们可以知道,echarts并没有更改数据.否者会触发watch

说明并不是echarts底层给我们改了数据。

那数据从undefined 变为 null 肯定是有一个地方改动了。

如果不是echarts,那就是vue。难道真的是vue给我们改了数据?

求证:undefined 会变为 null是 vue 的锅

<template>
  <div>
    <h3>数据会变为unll吗</h3>
    <h2>{{ data2 }}</h2>
   </div>
</template>
export default {
  data() {
    return {
      data2:[undefined,undefined]
    }
  },
  mounted() {
    console.log('data2', this.data2)
  }
}

我滴亲娘呢?真的是vue给我们改了的呀,简直不敢相信。

有的小伙伴又说:有没有可能也不是vue的锅。

而是js本身就有这样的特征,在视图上会由 undefined 变为 null

下面我们不要使用vue框架。就使用普通的js去看看。

如果还是从 undefined 变为了 null.说明是 vue 的锅。

否者这就是一个特征:在视图上会由 undefined 变为 null

小心求证 数据由 undefined 变为 null

<body>
    <h3>数据会发生变化吗?</h3>
    <div id="demo"> </div>
</body>
<script>
    let data = {
        arr: [undefined, undefined, undefined, undefined, '数据1'],
        title: '会发生变化吗?'
    }
    let demo = document.getElementById('demo')
    console.log('控制台的数据', data)
    let htmltest = `<div>${data.arr}</div>`
    demo.innerHTML = htmltest
</script>

我们发现了:

原生js中, undefined在视图上会变为空字符串。

但是在vue中,undefined在视图上会变为null。

我们看下:原生js中 null 在视图上是否也会变为空字符串吗?

<body>
    <h3>数据会发生变化吗?</h3>
    <div id="demo"> </div>
</body>
<script>
  let data = {
      arr: [undefined, '数据2', null, '数据4'],
  }
  let demo = document.getElementById('demo')
  console.log('控制台的数据', data)
  let htmltest = `<div>${data.arr}</div>`
  demo.innerHTML = htmltest
</script>

 原生js中 null 在视图上也会变为空字符串吗? 是的

我为什会纠结在视图上 undefined 发生了变化呢?

因为今天我发现:在页面上的null。

我在代码中找了好久都没有找到哪一个地方写了null.这让我很疑惑

花费了我不少时间,导致我没有办法摸鱼。

所以:为了更好的摸鱼,呸,呸,呸, 为了掘金的奖品 就写下了这篇文章。

总结

通过一步一步的分析:我们知道了

1==》在vue中, undefined 在视图上会变为 null。

在vue中, null 在视图上仍然是 null

补充:但是字符串 'undefined' 和 'null' 在视图上会保持不变

2==》原生js中, undefined 在视图上会变为空字符串。

null 在视图上也会变为空字符串。

补充:但是字符串 'undefined' 和 'null' 在视图上会保持不变

以上就是undefined是否会变为null原理解析的详细内容,更多关于undefined是否会变为null的资料请关注脚本之家其它相关文章!

相关文章

  • Vue.js页面中有多个input搜索框如何实现防抖操作

    Vue.js页面中有多个input搜索框如何实现防抖操作

    debounce是lodash工具库中的一个非常好用的函数。这篇文章主要介绍了Vue.js页面中有多个input搜索框如何实现防抖操作,需要的朋友可以参考下
    2019-11-11
  • vue+echarts实现3D柱形图

    vue+echarts实现3D柱形图

    这篇文章主要为大家详细介绍了vue+echarts实现3D柱形图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • VUE在for循环里面根据内容值动态的加入class值的方法

    VUE在for循环里面根据内容值动态的加入class值的方法

    这篇文章主要介绍了VUE在for循环里面根据内容值动态的加入class值的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • 如何修改element-ui日期下拉框datetimePicker的背景色样式

    如何修改element-ui日期下拉框datetimePicker的背景色样式

    这篇文章主要介绍了修改element-ui日期下拉框datetimePicker的背景色样式的操作代码,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Vue3+Vite+TS使用elementPlus时踩的坑及解决

    Vue3+Vite+TS使用elementPlus时踩的坑及解决

    这篇文章主要介绍了Vue3+Vite+TS使用elementPlus时踩的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue.js 实现微信公众号菜单编辑器功能(一)

    Vue.js 实现微信公众号菜单编辑器功能(一)

    最近vue.js 非常火热,小编也趁机学习了下vuejs的一些基础知识,于是尝试做一个像微信平台里的菜单编辑器功能,下面脚本之家小编把vue.js 微信公众号菜单编辑器功能的实现代码分享给大家,需要的朋友参考下
    2018-05-05
  • element-ui中el-form-item内的el-select该如何自适应宽度

    element-ui中el-form-item内的el-select该如何自适应宽度

    自从用了element-ui,确实好用,该有的组件都有,但是组件间的样式都固定好了,下面这篇文章主要给大家介绍了关于element-ui中el-form-item内的el-select该如何自适应宽度的相关资料,需要的朋友可以参考下
    2022-11-11
  • Vue2.x Todo之自定义指令实现自动聚焦的方法

    Vue2.x Todo之自定义指令实现自动聚焦的方法

    我们希望用户双击 todo 进入编辑状态后输入框自动获取焦点,而不是需要先手动点一下。这篇文章主要介绍了Vue 2.x Todo之自定义指令实现自动聚焦,非常具有实用价值,需要的朋友可以参考下
    2019-01-01
  • Vue3如何处理重复渲染代码的问题

    Vue3如何处理重复渲染代码的问题

    这篇文章主要来和大家一起探讨一下在Vue3项目中如何处理重复渲染代码的问题,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • vue实现大文件切片断点续传

    vue实现大文件切片断点续传

    上传文件,基本上用了input框就可以解决,但大文件应该怎样上传呢,一次性上传明显不现实,因为每次一断网,那就会从头开始上传,所以切片势在必行,关键就是如何切,怎么保障文件数据不会丢失,同时优化上传保障机制,本文就来给大家讲讲如何上传大文件
    2023-07-07

最新评论