Object-Oriented JavaScript 笔记
Object-Oriented JavaScript笔记(一)
Object-Oriented JavaScript笔记(二)
Object-Oriented JavaScript笔记(三)
Object-Oriented JavaScript笔记(四)
Object-Oriented JavaScript笔记(五)
Object-Oriented JavaScript笔记(六)
Object-Oriented JavaScript笔记(七)
第二章 基本数据类型、数组、循环和条件语句
变量是大小写敏感的
基本类型
基本类型(5类) Number、String、Boolean、Undefined、Null
除了基本类型外的,都是object,特例
>>> typeof null
“object”
Infinity是number类型的
>>> typeof Infinity
“number”
JS中最大的数是1.7976931348623157e+308 最小的分数是5e-324
非0数除以0得到Infinity,0除以0得到NaN
1/0 = Infinity
0/0 = NaN
Infinity 与非NaN运算值为Infinity
Infinity – 1 = Infinity
NaN 与任何number运算值为NaN
一个String与一个变量做除’+'(加)以外的运算,都会转换成做数学运算
>>> var s = ‘3’; s = 3 * s; typeof s;
“number”
>>> var s = ‘3’; s = 3 + s; typeof s;
“string”
两次逻辑非操作会做强制布尔转换。大部分情况都是为真,除非:
1.空字符串 ”
2.null
3.undefined
4.数 0
5.数 NaN
6.布尔值 false
利用惰性求值(Lazy Evaluation)做保护伞并不是处处受用
var mynumber = mynumber || 10;
如果预先定义的 mynumber =0 ,这里就不是我们所预料的了。
=== 值与类型比较
!== 不含类型转换的不等于比较
NaN不与任何值相等,包含其自身
>>> NaN == NaN
false
null值并不是由js环境给分配的,而是由代码给分配的
>>> var value = null;
>>> typeof value
“object”
undefined与null还是大差别虽然微小,但是不容忽视
>>> var i = 1 + undefined;
>>> i
NaN
>>> var i = 1 + null;
>>> i
1
这种差异发生在类型转换上
>>> var i = 1*undefined;
>>> i
NaN
>>> var i = 1*null;
>>> i
0
数组
数组新添加元素索引跟数组最大索引之间有空隙的话,会被undefined值填充
>>> var abc = [1];
>>> abc[3] = 5;
>>> abc
[1, undefined, undefined, 5]
删除数组中的元素并不会改变数组大小,仅将删除位置为undefined
>>> var a = [1, 2, 3];
>>> delete a[2];
>>> a
[1, 2, undefined]
可以使用数组下标的形式访问字符串
>>> var s = ‘one’;
>>> s[0]
“o”
循环和条件语句
通常情况下我们会把变量放if条件中做检查,但这样做并不一定妥当,变量可能存在但值为false
>>> var result = ”;>>> if (somevar){result = ‘yes’;}
somevar is not defined
>>> result;
“”
一种更好的方式
>>> if (typeof somevar !== “undefined”){result = ‘yes’;}
>>> result;
“”
default是可以放在switch里任意位置的,并不一定是最后
1 2 3 4 5 6 7 8 9 10 11 |
var a = 4;switch(a){ case 1: console.log(1); break; default: console.log('d'); break; case 6: console.log(5); break; }; |
-EOF-