Javascript 学习笔记
Javascript note
chapter one
1.1 值
js中有六种基本的值类型:number,string,boolean,object,function,undifined
1.2 number
计算机使用序列的方式存放数据到内存中,js使用固定长度为64的位序列来存储数字值,对于二进制来说,64位可以表示2^64个数字
但实际上并没有那么大,因为这个64位的位序列需要表示负数,所以有一个符号位用来表示数字的正负;另外还需要一些位来存储小数点位置的信息(具体的书中没说明,有点复杂 暂不学习)
由于计算机处理浮点数的机制,计算整数时,计算结果会十分准确,但计算小数时就会有精度损失,因此计算小数都是近似值
1.2算术
ps:无需记熟运算符的优先级,不确定时只需要大胆加braces()
1.2.2特殊数字
+/-Infinity
NaN 非数值 在Infinity-Infinity ,0/0等情况会出现
1.3字符串
在JS中 "" , '' 括起来的都是字符串
ps: 特殊情况 就是字符串里有 "" '' 这个时候就要用到 转义符 (和Java一样啦)------'\' 如 \n 为换行 如 "fuck '\n' " 需要写成 "fuck \"\\n\""
可以用'+'来连接 多个字符串
1.4 一元运算符
如 typeof sizeof
1.5 boolean
只有两种取值 true false
特别注意 字符串的比较机制(java.lang.String是不允许使用 < , >等 operator 来比较的),在js中是按unicode值(首字母)来比较的
实质上就是按照Unicode值来比较的
1.5.2逻辑运算符(&&,||, !)
注意一下 运算符优先级问题,简单来说 || 优先级最低,其次是&&接着是比较运算符(<,>,==)
*三元运算符 ? :
1.6 undefined null
js特有的undefined(感觉是) 在js中和null差别不大
1.7自动类型转换
js会自动把运算符两端的值转换成自己期望的类型,称为 类型强制转换
1 console.log(5 +"6" );
<!--56--> 2 console.log(5 -"3");
<!--2--> 3 console.log(5 +'1');
<!--51--> 4 console.log(5 * '2');
<!--10-->
但有些值js无法转换,如NaN , 字符串 ,此时就会产生NaN ,包含 NaN的运算结果仍然是NaN,
相同类型的值之间使用"=="进行比较时,运算结果很好预测(只要两端没有NaN搞事,只要两个值相同,则返回true),
1 console.log(NaN == 5);
<!--false--> 2 console.log(NaN == undefined);
<!--false--> 3 console.log(NaN == "");
<!--false--> 4 console.log(NaN == null);
<!--false-->
另外,当使用一个值和boolean 的false比较时,js的比较规则是,0,"",NaN 都等价于false,其他都等价于true
如果运算符两端存在null 或者undefined ,那只有两端都是null 或者 undefined 才为 true
顺便一提,严格比较符 '===' ,则要求完全一致才返回true
console.log(null == undefined);
<!--true-->
console.log(null === undefined);
<!--false-->
由于当operator两端的值类型不同,js的转换规则比较复杂,请事先确定两端值类型一致
至于使用相等运算符会不会对后续代码造成意外影响,答案是有可能会。
#程序结构
##control flow
### if else
js 与 java有点不同语法
是if()
doWork;
else if()
doWork;
else
doWork;
#章节习题