JavaScript处理JSON

由于eval()可以执行任意的JavaScript代码造成不安全,因此不建议使用eval()解析JSON

JSON.stringify()序列化一个JSON值

var foo = {};
foo.x = "new prop";
foo.y = 3;

var JSONfoo = JSON.stringify(foo);
//JSONfoo => {"x":"new prop","y":3}

JSON.parse()反序列化一个JSON值

var backToJS = JSON.parse(JSONfoo);

参考:https://en.wikipedia.org/wiki/JSON#Security_considerations

JavaScript标准库-常量属性

表示一个简单的值的全局属性

1. Infinity

Infinity 数值,正无穷大,大于任何值

2. NaN

Not-A-Number

等号运算符(== 和 ===) 不能被用来判断一个值是否是 NaN
判断一个值是否是NaN,使用 Number.isNaN() 或 isNaN() 函数

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

function valueIsNaN(v) { return v !== v; }
valueIsNaN(1);          // false
valueIsNaN(NaN);        // true
valueIsNaN(Number.NaN); // true

3. undefined

首字母大写的Undefined表示的是一种数据类型,小写的undefined表示的是属于这种数据类型的唯一的一个值

一个未初始化的变量的值为undefined,一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined

可以使用严格相等运算符===判断一个值是否是undefined

var x;
if (x === undefined) {
   //严格相等执行这里,注意不要使用普通的相等==
}

也可以使用typeof来判断(推荐)

if (typeof x === 'undefined') {
   // 即使x没有被声明过也不会报错
}

4. null

null是一个字面量,而不是一个全局变量,表示空值(null or an "empty" value),即对象没有被呈现(no object value is present),是JavaScript的原始对象。