JSON转换方法问题
JSON两个方法
JSON.parse(); string --> json
JSON.stringify(); json --> string
js转换json数据为对象的方法:
非标准的JSON字符串: {error: 0, id: 1, time: 1526541587, acc: 0, ref: 0}
标准的JSON字符串: {"error": "0", "id": "1", "time": "1526541587", "acc": "0", "ref": "0"}
标准的JSON字符串可采用方法 obj = JSON.parse(str)将 JSON字符串str 转换为对象obj,也有 str = JSON.stringify(obj) 方法将obj 转换为 JSON字符串str
非标准的字符串可以采用 obj = eval( "(" + str + ")" ) 方法将非标准的JSON字符串转换为obj对象,eval转换的对象需要用()括起来;并且eval()方法也可以转换标准JSON字符串,也能转换JSON数组
变量提升
if(false){
var a = 1;
}
console('a' in widow); //true
console.log(a); //undefined
此时尽管 if 条件为假,但是变量 a 的声明会被提升,但是不会被赋值,所以此时 a 是存在的但是值为undefined;
还有for循环的条件语句变量也会被提升,例如
for (var i = 0;i<10;i++)
{
dosomething(i);
}
console.log(i); //10 此时的 i 存在,并且有值
补充,函数声明会在变量声明提升之前提升
立即执行函数只会执行一次
(function (){
})();内部内容只会执行一次
typeof(null) == object
历史遗留问题,起初null的出现就是为了把object设为空
typeof问题之其他
未经声明的变量在使用的时候会控制台报错,但是如果使用 typeof(未经声明的变量) 不会报错。此时返回一个字符串类型的undefined
逗号运算符
var a = ( 1 - 1, 1 + 1);
此时a等于2;
逗号运算符就是把括号两边的表达式都计算出来,将逗号后面的作为返回值返回
parseInt(参数1,参数2)
如果存在两个参数,则意思为将参数一以参数2而基底转换为十进制的整数
例如 parseInt(11,2) = 3
toString()方法的使用
undefined.toString() 报错
null.toString() 报错
只有上述情况会报错,还有一种特殊情况也会报错,就是没有原型的对象
例如 var a = Object.create(null) //此时的a.toString()也会报错
function 变为表达式之后将不存在
例如:
if(function f((){}){
//此时运行会进入满足条件运行语句,但是此时的 f 是未定义的状态,无法访问但是typeof是可以有返回值的为“undefined”
typeof(f);//undefined
}
arguments.callee指向函数引用
function test(){
//arguments.callee == test;
}
trim()
string.trim();
string--字符串
** 求次方
2**3 //8
3**4 //81
document.createDocumentFragment()
创建一个虚拟的文本节点