Object-Oriented JavaScript笔记(一)

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里任意位置的,并不一定是最后

var a = 4;switch(a){
     case 1:
          console.log(1);
          break;
     default:
          console.log('d');
          break;
     case 6:
          console.log(5);
          break;
};

-EOF-