javaScript一些需要注意的细节

时间:2023-03-08 21:08:19

变量声明早于代码运行

函数声明早于变量声明

this指针代表的是执行当前代码的对象的所有者

JavaScript执行完同步,才能执行异步队列。如:alert,for if while 同步执行,在执行这些代码时,其它代码不执行。//关于JavaScript异步执行

属性在查找时先查找当前对象中属性,再查找继承原型,最后查找最终原型object是否存在。object的prototype为null。

object.prototype共享一份内存。构造方法重复构造。

花括号({})是function的简写,方括号([])是array的简写。

a=b;为a指向同一个b

a=b();为执行b,返回值赋值给a

a=new b();为在内存新建一个b,a指向一个新的b对象

function b(){
return 1+2;
}
var a=b();//out 3
var c=b;//out:function b(){ return 1+2;}

y = y || 0;

如果y已经定义 , y || 返回 y, 因为 y 是 true, 否则返回 0, 因为 undefined 为 false。

  1. false0、空字符串("")、NaNnull 和 undefined 被转换为 false
  2. 所有其他值被转换为 true

在C++或C#中,当我们谈到对象,指的是类或者结构体的实例。对象根据他们实例化的模板(就是所谓的类),会拥有不同的 属性和方法。但在JavaScript里对象不是这个概念。在JavaScript中,对象就是一个键/值对的集合 -- 你可以把JavaScript的对象想象成一个键为字符串类型的字典。

有两种简单方法可以创建一个空对象:

var obj = new Object();

和:

var obj = {};

这两种方法在语义上是相同的。第二种更方便的方法叫作“对象字面量(object literal)”法。这种也是 JSON 格式的核心语法,一般我们优先选择第二种方法。

“对象字面量”也可以用来在对象实例中定义一个对象:

var obj = {
name: "Carrot",
"for": "Max",
details: {
color: "orange",
size: 12
}
}

对象的属性可以通过链式(chain)表示方法进行访问:

obj.details.color; // orange
obj["details"]["size"]; //
var str="size";
obj["details"][str]; // 12 动态访问
var str2="length";
obj["details"][str2]=100;//动态添加
obj["details"]["length"]; // var obj = {
name: "Carrot",
"for": "Max",
details: {
color: "orange",
size: 12,
length:100
}
}

以上代码示例来自----来自