JavaScript总结1

一、JavaScript变量类型、声明、作用域

1.1 数字 number

小数和整数都叫number,以0x或0X开头的表示十六进制。当无穷大时,用Infinity表示(试试 9/0),其他非数字用NaN(not-a-number, 试试 9/’a’);关于NaN,他不等于任何值,包括自己。NaN != NaN 或 NaN !==NaN返回true。需要注意的是,由于小数的精度问题,如果涉及RMB,单位最好用分。

1.2 字符串 string

用双引号单引号括起来都可以,字符串有特殊字符可以用 转义字符。有很多功能函数可以用的。

1.3 布尔值 boolean

该类型只有两个值 ture/false。在js中,undefined,null,0,-0,NaN,以及空字符串””都等于false。

1.4 null

他用来描述一个空值,需要注意:typeof null算出来的结果是object。

1.5 undefined

变量的一种取值,表示变量没有初始化,或者对象中没有这个属性,函数没有返回值也返回他。

null == undefined  //返回ture

null === undefined //返回false

1.6 对象 object

包含了对象 { },数组 [ ],函数 function( ){ },可以用 . 或者 [] 访问其中的属性。

2 变量声明及作用域

所有类型变量用var声明,可以一次声明一个或多个。js是函数作用域,不像java,c#是块级作用域。在函数内声明的变量是局部变量,必须用var。否则它会成为全局变量,声明一个全局变量事实是定义了一个window对象的属性(var a  可以理解为window.a),局部变量的优先级高于同名的全局变量。在变量声明中,js有个特性叫做声明提前(hoisting),即无论在哪里声明变量,他都会提前到他所处的作用域的最前端。参考网上一段代码

if(!("a" in window)){
	var a =  1;
}
alert(a);

他会弹出undefined,为什么不是1?因为hoisting特性,var a 被提前到最前面声明,作为一个未赋值的全局变量,此时window具备了a属性,”a” in  window 返回true,不会执行a = 1;这段代码等价于

var a ;
if(!("a" in window)){
	a =  1;
}
alert(a);

二、运算符

常用的一些运算符都是差不多的,比较特殊的是:

1  =,== 和 ===

他们的定义有些不同,===叫做严格相等运算符(strict equality),称为恒等,==称为相等,=称为赋值

===比较时,首先比较值,并且不进行任何类型转换,满足值相等并且类型相等,则返回true。对于引用值,必须指向同一个对象object才相等。null === undefined 返回false,null == undefined 返回true;

2 in和instanceof

in判断 左边的字符串值是不是右边对象的属性

instanceof判断 左边的对象是不是右边的类

var test = {
  x : 1
}

"x" in test //true
"y" in test //false

var test_Date = new Date();

test_Date instanceof Date;//true
test_Date instanceof Object;//true
test_Date instanceof RegExp;//false

3 && 与 ||

他们两个不仅仅返回boolean值!

&&逻辑与 他从左到右一次计算值,只要期间有一个为false,那么再右边的就不会计算了,直接返回false。

有个特殊的用法称做短路,是为了防止类型错误的一种技巧。

||逻辑或 他从左到右一次计算值,只要期间有一个为true,那么再右边的就不会计算了,直接返回true。

他有种特殊的用法可以为参数提供默认值。

/*短路的用法
 *防止test为空,从而在取x值的时候产生错误
 */
var test = {
  x : 1
}
var y = test && test.x; //y = 1;

/*提供默认值
 *若data为空,默认设为xxxx
 */
function test_Fn(data){
  data = data || "xxxx";
  /*
   *其他操作
   */
}

分享一张网上找的思维导图:

view

三、语句

常用的循环,条件,跳转,异常处理语句跟java都大同小异。比较特殊的是,对于for-in循环,他循环的是对象的可枚举属性。条件if-else,switch-case。有个小技巧是,当条件是可枚举时,比如1表示周一,2表示周二……这时用数组的方式缓存枚举值,用下标访问,要比条件判断的性能更好。

对于with,他临时改变的作用域链,最好别用。debugger 用来产生一个断点。

use strict 是一条指令,他只能出现在脚本代码的开始或者函数体的开始,表示后面的代码按照严格模式执行。关于严格模式和非严格模式的区别参考《JavaScript权威指南》5.8节。

原文地址:https://www.cnblogs.com/lzq1065763582/p/4821636.html