序言
剛剛工作的時候,讀了一遍犀牛書和高程,但是對於其中的內容不甚了解,大概的快速過一遍,很多知識知其然不知其所以然。在工作一年之后,重新撿起來在看一遍,實踐和理論結合才能獲得更好的效果,這次筆記主要是為了再次牢記一些基礎知識,加深對於js這種語言的理解。寫的並不全,主要是為了自己加深印象。
1、類型,值和變量
在JavaScript中,數據總的會分為兩種類型,原始類型與對象類型。
原始類型包括數字、字符串和布爾值,同時,在原始類型中,有兩種特殊的類型,null(空)和undefined(未定義)。除了這些原始類型以為的東西,都是對象類型。
對象就是屬性的集合,屬性就是‘鍵\值對’。普通的對象是屬性的無序集合,但是有一些特殊的對象不是,比如數組。數組是對象類型,但是數組是有順序的。另一種特殊的對象就是函數,函數可以被執行,但是同樣可以進行對象操作。除了以上數組類和函數類意外,JavaScript還提供了三種類分別是,日期(Date)、正則(RegExp)和錯誤(Error)。
JavaScript中的數字運算
除了基本的加減乘除運算外,JavaScript還提供Math對象進行復雜運算。Math對象的屬性如下
Math.pow(3,3) 計算3的三次冪
Math.round(.6) 四舍五入計算
Math.ceil(.3) 向上求整
Math.floor(.3) 向下求整
Math.abs(-5) 求絕對值
Math.max(x,y,z) 返回最大值
Math.min(x,y,z) 返回最小值
Math.random() 返回一個0到1的偽隨機數
Math.PI 返回圓周率
Math.E e:自然對數的底數
Math.sqrt(3) 3的平方根
Math.sin(0)
Math.cos(0)
Math.log(0)
當計算超出JavaScript的計算上線時,會發生溢出,並返回無限大(infinity)
在JavaScript中,所有的實數都是由一個近似的浮點數表示,所以在計算數值的時候,如果有必要的話,需要首先進行處理,然后再賦值。
JavaScript中的文本
轉義字符 \ ex 'you\'re right,it can\'t be a quote'
JavaScript中的數組操作
var a = 'hello,world'
a.charAt(0) 返回'h' 返回第0個字符
a.substring(1,4) 返回ell 返回第2個到第4個字符,與slice不同,兩個參數順訊可以顛倒
a.slice(1,4) 返回ell 但是與substring不同的是slice可以接受負數
a.indexOf('l') 返回2 首次l出現的位置
a.lastIndexOf('l') 返回10 最后一次出現l的位置
a.indexOf('l',3) 返回3,第三個字符之后出現l的位置
a.split(',') 返回數組 以,划分
a.replace('h','H') 返回被替換后的字符串
在JavaScript中,字符串是不能被改變的,以上操作返回的都是新的字符串
JavaScript中的布爾值
在JavaScript中 undefined null 0 -0 NaN '' 都是false。除了這6個值,其他值都不會被當成false 包括空數組和空對象
null和undefined
在JavaScript中 對null進行typeof運算,返回值為object。也就是說null其實是一種特殊的對象,他的含義是非對象,他表示數字、字符串、對象沒有值。對於undefined來說,他表示的未定義。對undefined進行typeof操作 返回的是undefined
JavaScript中包裝對象
JavaScript中的對象是一種復合值:他是屬性或命名值得集合,可以通過'.'符號來引用屬性。當屬性值是一個函數的時候,稱其為方法。通過obj.m()來調用。對於字符串等非對象,他們也有屬性,從根本上看,是在對其進行操作的時候,新創建了一個對象,在操作結束后銷毀了那個對象。
JavaScript中布赫編的原始值和可變的對象引用
JavaScript中的原始值(undefined,null,布爾值,數字,字符串)都是只讀的,所有對其的操作都是返回一個新的值。而對於賦值符號=,很多時候只是多了一個指向,而不是多了一個數組。比如 var a = [1,2,3];var b = a;這是a和b指向的是同一個數組,對a進行操作,b也會改變。
JavaScript中的轉換
JavaScript中的轉換相等
null==undefined;
'0'==0;
0==flase;
'0'==flase;
JavaScript中的顯示類型轉換
上面的轉換時自動的轉換,JavaScript中同樣提供了主動的轉換函數
Number('3') 返回3;
String(false) 返回'flase'
Boolean([]) 返回true
Object(3) 返回New Number(3)
2、表達式
in運算符
var point = {x:1,y:2}
'x' in point 返回true
instanceof運算符
var d = new Date();
d instanceof Date(); ture 因為d是由Date()創建
d instanceof Object ;true d是一個對象
typeof運算符
typeof a; 返回a的類型