第二章
变量:1声明 2初始化(赋值)
变量名:1区分大小写 2任意数字,字符,下划线组合 3不能数字开头
操作符:++前置 先返回值再自增1,后置 先自增1再返回
var a = 1;
var b = a++;
console.log(b); //1
console.log(a); //2
!(数字,字符串,布尔,null(也是对象),undefined),都是对象。
Infinity:超出JS处理范围的数值。typeof Infinity => number;
console.log(1e309); //Infinity
console.log(1e308); //1e+308
console.log(-Infinity+Infinity); //NaN
console.log(Infinity+1); //Infinity
console.log(Infinity-1); //Infinity
console.log(Infinity*1); //Infinity
console.log(Infinity/1); //Infinity
NaN:console.log(typeof NaN);//number, 属于数字。
console.log(1*'abc');//NaN
console.log(1*'abc'); //NaN
console.log(1+ true); //2
console.log(1* null); //0
console.log(1* undefined); //NaN
不支持运算的结果为NaN,且具有传染性。
字符串转换:把一个数字字符串用于算术运算,该字符串会被当成数字类型使用,+除外。
任意数字字符串转数字:*1;
其他类型转字符串:+"";
布尔:加引号为字符串true或false。
非与或
同一值两次!等于其等效布尔值。
falsy:null, undefined, "", NaN, 0, false
优先级:!&&||
惰性求值:JS引擎特点,&&or||一旦满足其特点即返回,后面不再运算。逻辑表达式中有非布尔类型操作数也有效。
var a = 11;
var d = 22
console.log(true || a); //true
console.log(false || a); //11
console.log(false || a || true); //11
console.log(false || a); //11
console.log(false || a || false); //11
console.log(false || a || b); //11
console.log(false || a || true || d); //11
||返回首个不影响结果的短路值。
var b = 2;
var c = 3;
console.log(false && b); //false
console.log(true && b); //2
console.log(true && b && false); //false
console.log(true && b && true); //true
console.log(true && b && true && c); //3
&&返回首个false或falsy,或返回最后一个真值。
利用||的特点,var testnum = testnum || 10; //如果testnum未定义则初始化为10,如果定义了返回原值。
注:6个falsy转布尔值都为false,此公式对它们无效。
数组:能存储任何类型的数据。
第三章
函数:实参随便写,JS引擎只取形参够用的,后面自动忽略不报错。
函数内置argments()方法。
全局函数:
parseInt()第二个redix参数不指定,默认十进制。读取日历数据有0的开头要注意。
isNaN():检查输入值是否可以参与算术运算。
变量域:函数域优先全局。
var a = 1;
function f1() {
alert(a);
var a = 2;
alert(a);
}
f1();
//undefined。2。
//局部变量a会覆盖所有与其同名的变量,该变量已经存在本地空间,没赋值。
函数是数据。
函数标识记法:var a = function (){return 1;}
63页开头的那段代码是错的。