js犀牛书

1.null /undefine/数字/布尔值/字符串   无法改变的值,可做比较。  基本类型

2.使用字符串属性时,会自动生成一个临时变量。并不会改变原来的值。

var a="test"

读取:a[0]
为:"t"
设置
a[0]="r"

a //再次读取a值
"test"

3.对象的值不是值的比较,即使两个对象包含相同的属性及值,也 不相等。

o={x:1},p={x:1}

o与p也并不相等???????????这句话说法有问题:

o===p ----->是false;

另外,数组也是对象。因此 a=[ ],b=[ ]    a===b ---------->也是false

//两个单独的对象永不相等。

4。对象类型被称为引用类型。区别与基本类型。

引用类型的比较,只有引用同一个基时才可以:

 var a=[ ];

var b=a;

a===b ----------->true

且 b[0]=1;

则 a[0]==1  --------->true

因为是引用。

5.如果想要得到基对象的副本(对该副本操作不会影响到原对象),则必须显示复制。

var a=[1,2,3]

var b=a//-----------> false,这种是引用

var c=[ ]

for (; ;){

c[i]=a[i]

}


当改变c[i]时,不会改变a;

6.判断对象/数组是否相等时,也需要显式的比较属性与元素

7.==比较时,做了类型转换,

but:

(undefine==false)?1:0----------->0

8. x+""---------------------------->String(x)

 +x----------------------------->Number(x)

!!x------------------------------>Boolean(x)

9.js 里的申明提前

var scope="global";
function f(){
	console.log(scope);//输出 undefined
	var scope="local";
	console.log(scope);
}


相当于:
var scope="global";
function f(){
	var scope;
	console.log(scope);//输出 undefined
	scope="local";
	console.log(scope);
}

定义提前了,然而并没有真正赋值;

10.当申明了一个全局对象时,实际上是申明了全局对象的一个属性

没有申明,直接赋值

fakevar=8;

相当于 this.fakevar=8

11  a.shuxing 与a[xx]都可以访问属性,不同的是前者 只能的属性名只能是合法的标识符,后者可以未知名称且包含空格/标点符号/数字等

12  in 运算符希望它的左操作数是一个字符串,希望它的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数的属性名,那么表达式返回true.

var data=[7,8,9]

"0" in data ?1:0   等价于 0 in data?1:0  ------------->1

0,1,2 in data 都是正确的,只是表示位置属性 data[0] data[1] 

3 in data ?1:0 ---------->0

13.  null undefined  NaN 

null===null?1:0----------->0

这三者一样

NaN 与任何包括它自己都不相等

x!==x  来判断 NaN

14.== 

null== undefined?1:0---------->1

15. typeof undfined =undefined

typeof null=object

typeof NaN =Number

16. delete  删除对象属性或数组元素

删除一个对象,并同事返回true,删除一个不存在的对象,也会返回true.在严格模式下,更多的规定了不能删除的内容。

不能删除var 申请的变量,将返回false,只能删除左值,

17.for in  -----------in后面必须是object

    for (var p in o)  其实是每次定义一个p,p=o.x     x是其属性。每次都会重新计算

  所以  for(a[i++] in o) 的:a[i]=o.x,每次都会有一个计算

  for in 循环并不会遍历数组的所有属性,只会枚举可以被枚举的属性

18. break ;

     单独使用,只是退出最内层的循环或者 switch

     js里面允许使用标签。也允许将break与标签结合起来。但是,这应该是糟粕吧,精华书里面并没有看到

19. try/catch/finally

     try :定义了需要处理的异常所在的代码块

     catch :紧跟try从句,try 发生异常时,执行catch 的代码逻辑,

    最后是finallly,放置清理代码,不管 try 是否发生异常,finally的逻辑总是会执行。

   catch,finally必须用花括号括起来。

js犀牛书_第1张图片

20.debugger 在es5中正式假如js。但是只有在调试器中才会产生断点,其本身并不会启动调试器。

21. 在严格模式下,调用的函数的this(不是方法)是undefined(非严格模式下,this指向全局变量)

22.对象

属性名字里有空格/连字符/属性是保留字,必须用字符串,使用引号来表示。


你可能感兴趣的:(web,前段杂,js)