问一个javascript的基本问题

请问如何将undefined转换为object对象,或者怎么在json里面使用呢?还有===怎么判断undefined?

在调用对象相关方法前要判断是否为null,undefined,是的话就不能调用,要不会报错
var s=null;
if(s)s=s.substring(2);///这里不判断s直接调用会报错,后续js代码都不会运行

undefined 不能直接转object,一定要个使用object的话 建议转换的时候判断一下,为undefined时创建一个新的object

var test = undefined;
判断undefined

if(undefined == test || typeof(test) == “undefined”) return true;

定义一个集合,然后直接用JSON.stringify();就可以封装了,如果集合中的元素没赋值,就是undefined。

判断的话,使用if(data[0].属性名 === undefined)可以判断

首先,undefined是在仅申明变量,但未给变量赋值前的变量的值。
var obj; // console.log(obj) 输出undefined
这时,给变量obj赋值一个对象,其中name的值是一个string,age的值是undefined
obj = {"name": "lenient", age: undefined};
如果用JSON.stringify(obj), 这时输出的是 {"name":"lenient"}, 值为undefined的age被忽略了。
如果想判断obj这个对象的哪个key的值是undefined, 需要遍历对象的每一个属性来判断

 var keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
  let key = keys[i];
  if (obj[key] === undefined) {
    console.log(key, '的值是undefined');
  }
}

请问如何将undefined转换为object对象,或者怎么在json里面使用呢?还有===怎么判断undefined?
1. 没有办法转成对象。 undefined 是一种值, 代表一个变量声明了,但是没有定义。比如:var a; 那么变量a的值就是 undefined。
2. 可以用typeof进行判断。 比如var a;typeof a === ;undefined'; 也可以直接判断:var a; a === undefined; // true

> obj = {"name": "lenient", age: undefined};
{ name: 'lenient', age: undefined }
> obj['a']
undefined
> typeof(obj)
'object'
> typeof(undefined)
'undefined'
> typeof(33)
'number'

可以认为undefined就是一种特殊的对象,类似number。但是在对象里做序列化不会显式转化,因为也没必要,在反序列化后得到的对象只要引用本身就是undefined,就如上面的obj['a']

> obj1 = JSON.parse(JSON.stringify(obj));
{ name: 'lenient' }
> obj1
{ name: 'lenient' }
> obj1['a']
undefined
> obj1['age']
undefined

if(undefined == test || typeof(test) == “undefined”) return true;

for(key in arr) {
if(arr[key] === undefined) //判断undefined
arr[key] = null; //转成null对象
}

来点权威的:

The global undefined property represents the primitive value undefined. It is one of JavaScript's primitive types.

Property attributes of undefined
Writable    no
Enumerable  no
Configurable    no

ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
也可以参考ECMAScript
ref: https://tc39.github.io/ecma262/

在调用对象相关方法前要判断是否为null,undefined,是的话就不能调用,要不会报错
var s=null;
if(s)s=s.substring(2);///这里不判断s直接调用会报错,后续js代码都不会运行