如何在JavaScript中简洁地初始化多个变量为null?

新手上路,请多包涵

js定义多个变量并且都初始化为null的简易写法

js中定义三个变量 let resourceId = uniqueNo = unitName = null; 能这样写吗,有其他简单写法吗?

阅读 2.3k
5 个回答

可以这样写,这种方法是最简单有效的。你也可以这样写:
let [resourceId, uniqueNo, unitName] = [null, null, null];

const makeNull = {
    [Symbol.iterator]: function* () {
        while (true) {
          yield null;
        }
    }
};

const [a, b, c] = makeNull;

console.log(a, b, c);
// null null null

首先不建议 let resourceId = uniqueNo = unitName = null 这样来写。赋值为 null 这种原始数据类型是可以的,但是如果是引用类型值的话就会有很大的问题。举个例子:

let resourceId = uniqueNo = unitName = []
resourceId.push(1)
console.log('resourceId => ', resourceId)
// 'resourceId => ' Array [ 1 ]
console.log('uniqueNo => ', uniqueNo)
// 'uniqueNo => ' Array [ 1 ]
console.log('unitName => ', unitName)
// 'unitName => ' Array [ 1 ]

另外,我是不喜欢初始化为 null 的,会比较喜欢初始化为 undefined,因为你设置为 null 的时候,在解构赋值或者期望 props 传递给子组件的时候,并不会被应用成指定默认值。比如说:

var test = { a: null }

function fn({ a = 1 }) {
  console.log('log-a =>', a) 
}

fn(test)
// 'log-a =>' null

所以我的建议是和 @Undest 的回答一样,直接 let resourceId, uniqueNo, unitName; 这样是我比较认可的。

可以,只要你不觉得变量多起来后不方便理解就没问题。
这样写会比较清晰:

let resourceId = null, uniqueNo = null, unitName = null;

或者如果你只是想初始化,后续变量作为判断条件,那初始化为undefined也可以,不需要赋值默认就是了:

let resourceId,uniqueNo,unitName;
新手上路,请多包涵

let a, b, c = null

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏