如题所示,现在很纠结一个对象类型的属性,初始化赋值应该选哪种?
应该选{},还是null?选择的理由是什么?有什么区别?求大神能解答下,谢谢
下面是选null
<template> <div> <p>{{ myObject.name }}</p> <button @click="updateObject">更新对象</button> </div></template><script>export default { data() { return { myObject: null, // 初始化为 null }; }, methods: { updateObject() { // 通过 this.myObject 来访问对象 this.myObject = { name: 'value' }; }, }, created(){ this.myObject = { name: 'wt' }; }};</script>
下面选{}
<template> <div> <p>{{ myObject.name }}</p> <button @click="updateObject">更新对象</button> </div></template><script>export default { data() { return { myObject: {}, // 初始化为{} }; }, methods: { updateObject() { // 通过 this.myObject 来访问对象 this.myObject = { name: 'value' }; }, }, created(){ this.myObject = { name: 'wt' }; }};</script>
如果每次更新都是直接 替换整个对象 ,那怎么声明都没差别,我个人习惯声明为 null
;如果改动只涉及属性,不涉及对象本身(索引)的替换那就用 {}
要说区别的话,空对象 {}
的布尔值也是 true
(因为引用类型赋值后内存空间的索引就存在了),但 null
是 false
,从这个角度来说,如果要 判断某个对象是否存在 再进行下一步操作,初始化为 null
是相对合理的选择
但也不是说 {}
就不能判断,只是说要额外操作(比如可以用 Object.keys().length
判断空对象),所以上述也只是我个人的选择,如果团队规范没有明确规定的话,可以参考参考
一般建议是数字初始化为0,字符串初始化为空字符,数组初始化为空数组,对象初始化为null,对象为Null更容易判断该对象是否已经被赋值,不过一般区别不大,
但是如果这个对象开始需要参与到视图渲染的,初始化为null可能会导致视图渲染报错,
总之不是固定的
赋值前输出还是正常的 赋值后,输出this.model,部分属性(关联el-form的属性)就变成undefined了,就像赋值后自动被改变/部分属性赋值无效 model是关联在el-form上的,以及有v-model双向绑定,不知道是哪个的关系
本文向大家介绍为什么data属性必须声明为返回一个初始数据对应的函数呢?相关面试题,主要包含被问及为什么data属性必须声明为返回一个初始数据对应的函数呢?时的应答技巧和注意事项,需要的朋友参考一下 对象为引用类型,当重用组件时,由于数据对象都指向同一个data对象,当在一个组件中修改data时,其他重用的组件中的data会同时被修改;而使用返回对象的函数,由于每次返回的都是一个新对象(Objec
typescript里面有一个属性 初始化的时候不会被检测,忘记是哪个了 const messageData:IMessageData[] = ref([]) 印象里是在 messageData:IMessageData[] 中间加入 <pXXXX>的属性,初始化的时候不赋值也不会飘红
vue2项目,data里定义初始值做双向绑定的时候,如果是空,应该写null还是undefinded还是其它,为什么?
问题内容: 假设我在Spring单例bean (简化代码)中进行了一些初始化: 我应该担心其他豆的可见性并对其进行标记吗? (假设我无法在构造函数中初始化它) 第二种情况:如果我 覆盖 in的值(例如在显式初始化或构造函数中的初始化之后),那么 将不会首先写入 该属性怎么办? 问题答案: Spring框架与Java编程语言无关,它只是一个框架。因此,通常,您需要将不同线程访问的非final字段标记
我不明白发生了什么事。我严格遵循所有的微软文档,事实上甚至不使用任何我自己的脚本/代码。首先,我按照他们的文档创建Python函数。成功了。https://docs.microsoft.com/en-us/azure/azure-functions/create-first-function-cli-python?tabs=azure-cli、cmd、browser使用命令行工具将Azure功能连