邏輯判斷:
2個可用三元運算符或邏輯運算符"||"
2個或以上個用if..else if..else條件判斷語句
3個以上用switch(n){ case x:語句一;break;default:語句二; }
標識符:變量名,函數(shù)名,屬性名以及函數(shù)的參數(shù),由字母,數(shù)字,下劃線_或美元符$組成,不能以數(shù)字開頭,不能使用關(guān)鍵字保留字
變量是用于保存值的占位符,通過關(guān)鍵字(操作符)var來聲明變量,關(guān)鍵字是JS內(nèi)部使用的名字,保留字是為未來JS擴展使用的關(guān)鍵字
Math.pow(2,1024)2的1024次方,JS中數(shù)值大于等于2^1024表示正無窮大
var a=1.2,b=1.1,c=a-b;c===0.1;false,當值為浮點數(shù)時產(chǎn)生的特殊情況
null==undefined;true(因為undefined派生自null值)null===undefined;false
window.onload加載完成html和css后才運行JS代碼,防止JS阻塞html頁面加載
轉(zhuǎn)義字符用反斜杠表示"" "\n"換行符 "\b"退格 "\反斜杠"(轉(zhuǎn)義自己)
es6通過關(guān)鍵字let聲明變量,聲明不提前,const聲明常量,值不可變
1.弱類型語言,聲明變量不需要聲明其數(shù)據(jù)類型
2.解釋型語言,一邊編譯瀏覽器一邊讀取(編譯型一次性翻譯完成才執(zhí)行代碼)
構(gòu)成:
1.ECMAScript,描述了JS的核心語法和基本對象
2.DOM(文檔對象模型),提供訪問和操作網(wǎng)頁內(nèi)容的方法和接口
3.BOM(瀏覽器對象模型),提供與瀏覽器交互的方法和接口
引入方式:
1.放入html標簽中
2.外部引入js文件
3.<head>里或<body>后面,建議放body里否則會阻塞html頁面讀取
變量的類型:
1.原始數(shù)據(jù)類型(簡單數(shù)據(jù)類型/基本數(shù)據(jù)類型)
2.引用數(shù)據(jù)類型(復(fù)雜數(shù)據(jù)類型)
數(shù)據(jù)類型由數(shù)據(jù)的值決定,用typeof()判斷
typeof()值:
String
Number
Boolean
undefined
function
Object(Array,null)
isNaN():
判斷是否為非數(shù)字值
其中NaN/undefined/object/非純數(shù)值類型字符串等為true;
數(shù)值/純數(shù)值型字符串/空字符串/布爾值/null/new Date()等內(nèi)置對象為false
(數(shù)值類型的字符串用于判斷時程序會將其隱式轉(zhuǎn)換成數(shù)值)
原始數(shù)據(jù)類型:
1.String字符串由零或多個字符組成,包括字母數(shù)字符號空格等,用引號包裹,可通過加號拼接,長度length,可下標獲取
2.Number包括所有數(shù)值,浮點數(shù)/整數(shù)/其他進制數(shù)值,八進制由0開頭,十六進制由0x開頭(瀏覽器打印出來的值都為十進制數(shù)值)
number類型三種特殊值:NaN,Infinity,-Infinity(科學(xué)計數(shù)法eg:123e2=12300,e為10,2為平方;NaN不等于NaN!)
3.Boolean布爾值true/false,常用來進行程序判斷(不能用引號包裹否則變成字符串)
4.null(空對象指針)代表空對象的引用,可用來清空對象,typeof返回的是object! 若變量將用于保存對象,可將變量初始化為null
null通常產(chǎn)生于程序運行過程中,當定義的變量不再使用時,變量就會賦值為null(JS中內(nèi)存自動清除機制)
5.undefined表示聲明了變量但未賦值的值(未聲明的變量typeof也為undefined且在其他函數(shù)中運行會報錯)通常聲明變量后沒有賦值,程序自動賦值undefined
引用數(shù)據(jù)類型:
1.object(對象):
屬性(事物固有特性)和方法(事物能做什么)的集合
定義對象是在棧內(nèi)存中儲存了一個指針,指向該對象的儲存路徑,復(fù)制對象即是復(fù)制路徑,所以改變對象屬性時復(fù)制拿到的值也是改變后的屬性
語法:鍵值對的形式,鍵名和鍵值用冒號隔開,屬性/方法間用逗號隔開,對象里的屬性/方法(打印整個方法,調(diào)用則需加括號)通過點運算符來進行訪問
2..array(數(shù)組):
數(shù)據(jù)的集合體,用來裝載不同的數(shù)據(jù)類型,數(shù)據(jù)間用逗號隔開
訪問(讀寫)數(shù)組里的元素通過元素的下標拿到,下標從零開始
創(chuàng)建方式:1.var arr = new Array();(若已先知數(shù)組長度可填入括號中,若寫入一個以上則認為是數(shù)組內(nèi)容);2.字面量表示法:var arr = [1,2,3];
3.function(函數(shù)):具有一定功能的代碼塊
數(shù)據(jù)類型轉(zhuǎn)換:
1.toString(num)/n.toString():將數(shù)值類型轉(zhuǎn)換為字符串(null與undefined報錯)num代表了轉(zhuǎn)換為幾進制數(shù)值的字符串
2.toFixed(num):將數(shù)值類型轉(zhuǎn)換為字符串,num表示數(shù)值需要保留幾位,默認值為0,遵循四舍五入法則,字符串無該方法
3.parseInt(要轉(zhuǎn)的字符串,字符串進制數(shù)(基數(shù))):將字符串轉(zhuǎn)換為整數(shù)(0xA=>10,最后輸出值都為十進制),從頭檢測直至非數(shù)值之前,與number()不同,number()比較嚴格(開頭非數(shù)值返回NaN,開頭為0則忽略)
4.parseFloat():將字符串轉(zhuǎn)換為浮點數(shù),不能轉(zhuǎn)換十進制以外數(shù)值的字符串,若第一個字符為0且該0不是小數(shù)點前面一位,則忽略0
強制類型轉(zhuǎn)換:
1.String():強制轉(zhuǎn)換為字符串,null與undefined亦可
2.Boolean():null,undefined,0,"",NaN均轉(zhuǎn)換為false,其他都為true
3.Number():純數(shù)值字符串轉(zhuǎn)換為對應(yīng)的數(shù)值,否則為NaN,空字符串/null/false/空數(shù)組=>0;true=>1;引用數(shù)據(jù)類型/undefined:NaN
算術(shù)運算符:
在字符串前加減乘除法運算符都可將字符串轉(zhuǎn)換為數(shù)值類型
+(加法運算或拼接) - * /(若分母為零,結(jié)果為無窮大) % ++ --用于變量或者值之間的算術(shù)運算
賦值運算符:
= += -+ *= /= %=
比較運算符:(二元運算符)
< == === != !==(不僅比較值還比較類型,只有在相同類型下,才會比較其值,可看成==比較后的非運算)
比較運算符的返回值都是布爾值,非數(shù)值字符串之間的比較是通過他們的Unicode碼來進行比較的
邏輯運算符:
優(yōu)先級為非與或
!:取反(返回布爾值;負負得正)
&&:一假即假;若有多個操作數(shù)且都為真則返回最后一個操作數(shù);若操作數(shù)中有一個為null / NaN / undefined,則優(yōu)先返回這三個值
||:一真即真(從第一個語句開始判斷,若此語句為真則不繼續(xù)執(zhí)行下一語句直接返回結(jié)果;當?shù)谝粋€語句為假時程序會繼續(xù)執(zhí)行直至輸出結(jié)果)
條件運算符:(三元運算符)
一元運算符:自增/自減/取反
語法:語句1?語句2:語句3;若語句1成立則執(zhí)行語句2,否則執(zhí)行語句3
字符串對象的方法:
concat()拼接多個字符串
trim()用來去掉字符串中前后空格符
toUpperCase(),將字符串變?yōu)榇髮?不修改原字符串
toLowerCase(),將字符串變?yōu)樾?不修改原字符串
match()用于搜索字符串中與之匹配的字符,返回值為數(shù)組,數(shù)組里包括了字符的值和第一次出現(xiàn)字符的下標值
replace(n,m),用于字符串中用字符串m替換目標字符n,返回值是被替換后字符串,不改變原數(shù)組(只替換第一個n)
charAt()通過下標值拿到對應(yīng)字符,若傳入的值不在字符串下標值范圍內(nèi)則返回空字符串(charCodeAt是拿到字符的字符編碼)
indexOf()搜索字符第一次出現(xiàn)的位置,若搜索的字符不在字符串里則返回-1,返回數(shù)值為子字符串的位置(lastIndexOf從后往前檢索)
slice(n,m)用于截取字符串中一段字符返回一個新字符串;當傳入一個參數(shù)則從傳入的參數(shù)位置開始截取到最后一個字符;
傳入兩個參數(shù)則截取n-m之間的字符(包括n但不包括m);若傳入的n為負數(shù)則從末尾開始截取,用字符串長度加上該負數(shù)以確定相應(yīng)的位置(m也一樣)
substring()同slice(),只是傳入?yún)?shù)為負數(shù)時自動轉(zhuǎn)成0,如(2,-1)會轉(zhuǎn)為(0,2)自動排序
split(n,m)用于切割字符串,返回一個數(shù)組(多用于字符串轉(zhuǎn)化成數(shù)組),n代表用于切割的切割符,m(可選)用于代表切割后的數(shù)組長度
注意:n這個切割符會和字符串對比,若字符串中有n這個字符則就在n這個位置將字符串切割開,否則返回只有一個元素的數(shù)組(即該字符串)
substr(n,m)用來截取一段字符串,n代表起始截取位置,m為截取長度(可選)n為負數(shù)時,傳入的負值與字符串長度相加;m為負數(shù)時,返回值為空字符串
數(shù)組對象的方法:(前四種為數(shù)組的棧方法)
pop()刪除數(shù)組最后一個元素,返回值為被刪除的元素;會改變原來的數(shù)組(即在原數(shù)組上刪除最后一個元素)
push()給數(shù)組添加元素到最后,返回新數(shù)組長度
shift()刪除數(shù)組第一個元素,返回值為被刪除的元素(字符串)
unshift()給數(shù)組添加元素到最前面,返回新數(shù)組的長度
join()指定字符來分割數(shù)組(默認用逗號隔開;用于把數(shù)組所有元素放入一個字符串,返回值為字符串,常用于數(shù)組轉(zhuǎn)字符串)
split()字符串轉(zhuǎn)數(shù)組
reverse()顛倒數(shù)組順序,返回新數(shù)組
sort()對數(shù)組元素進行排序,返回新數(shù)組,該方法比較的是字符串,即使元素都是數(shù)值,eg:12,9,13排序為12,13,9(先比較字符串首位)
可接收一個比較函數(shù)作為參數(shù),規(guī)定a-b為(升序)從小到大,b-a則為(降序)從大到小排列,eg:function mySort(a,b){return a-b;};console.log(arr11.sort(mySort));
concat()拼接數(shù)組返回對象,語法:arr.concat(arr1,arr2);
slice()截取數(shù)組中的一段數(shù)組,返回值是由截取的元素組成的數(shù)組,可以傳兩個值:(亦可傳一個值,如slice(0)截取全部)
第一個值代表開始截取位置的下標值,第二個值為截取結(jié)束位置(不包括此位置的元素);若值為負數(shù)則從數(shù)組末尾開始截取,用數(shù)組長度加上該負數(shù)以確定相應(yīng)的位置;
splice(n,m,k)用于刪除,添加或替換元素
n為刪除/添加數(shù)組元素的開始位置(若為添加時,位置是指第n個元素的前面,所以一般插到后面時是n+1,返回值為空數(shù)組);
m為刪除的個數(shù),為零時不刪除元素;k為添加的元素,可添加多個(選填)
forEach(muFun(),m),可將數(shù)組元素傳遞給他的回調(diào)函數(shù),相當于循環(huán)(muFun(item,index,arr)是回調(diào)函數(shù),m可選)
回調(diào)函數(shù)有三個參數(shù),第一代表數(shù)組元素,第二代表數(shù)組下標值,第三代表數(shù)組本身,"批量處理",改變原數(shù)組,無返回值
indexOf()用于查找數(shù)組里元素第一次出現(xiàn)的位置,返回值時Number,若未找到則返回-1;第一個參數(shù)代表要查找的元素,第二個參數(shù)代表從哪里開始查找(可選)
lastIndexOf()則從末尾開始查找第一個出現(xiàn)的某元素的位置
map()方法和forEach()方法一樣,但有返回處理后的新數(shù)組,不改變原數(shù)組
filter()方法和forEach()方法傳入的參數(shù)一樣,篩選返回新數(shù)組,不改變原數(shù)組,若無設(shè)置返回值,則它的返回值為空數(shù)組
every()語法和foEach()方法一樣,every()的返回值為布爾值,只要有一個不符合條件就返回false
some()語法和foEach()方法一樣,some的返回值為布爾值,只要有一個符合條件就返回一個true
數(shù)字對象:
valueOf()
Math.abs()取絕對值
Math.round()四舍五入取整
Math.pow(x,y)返回x的y次方
Math.floor()向下取整,返回一個小于num的最大整數(shù)
Math.ceil()向上取整,返回一個大于num1的最小整數(shù)
Math.sqrt()開平方根,負數(shù)則返回NaN
Math.random()隨機數(shù),取值范圍0到1(不包含1)
=取一個范圍的隨機數(shù),Math.random()(最大值-最小值)+最小值;隨機生成n到m的整數(shù)var n,m;Math.floor(Math.random()(m-n+1)+n)
toExponential()數(shù)字轉(zhuǎn)為科學(xué)計數(shù)法
Math.PT即π,弧度 = 角度*(2π/360)
求數(shù)組中最小值min();最大值max();返回值均為Number,數(shù)組中只要有一個NaN即返回NaN
布爾對象:
valueOf()返回 Boolean 對象的原始值
日期對象:
new Date()返回當前時間,傳參則會自動轉(zhuǎn)換參數(shù)時間戳對應(yīng)日期,亦可傳最多7個參數(shù),對應(yīng)年月日等
(時間以1970年1月1日0點為基準,中國時區(qū)為8點) new前加"+"可轉(zhuǎn)換時間戳
new Date().toLocaleDateString()當前當?shù)貢r間字符串,格式"年/月/日"
getTime()至今的時間戳,相當于日期前加"+"轉(zhuǎn)換
getFullYear()年
getMonth()月 0-11
getDate()日
getDay()星期 0-6
getHours()時
getMinutes()分
getSeconds()秒
getMilliseconds()毫秒
循環(huán)(遍歷):
1.while(當循環(huán)) do...while(直到循環(huán))
2.for(遍歷數(shù)組盡量使用for代替forEach) for...in(用于遍歷對象,不適合遍歷數(shù)組)
3.forEach(callback(value,index,arr){},this)為數(shù)組中含有效值的每一項執(zhí)行一次callback函數(shù)
標準的for循環(huán)中的i是number類型,表示的是數(shù)組的下標,但是foreach循環(huán)中的i表示的是數(shù)組的key是string類型。
4.map((value,index,arr)=>{})返回新數(shù)組,不修改調(diào)用它的原數(shù)組本身,每個元素都是回調(diào)函數(shù)的結(jié)果
5.reduce()
6.filter()
7.every()
8.some()
document.write("")向文檔輸出內(nèi)容,""中可輸出標簽,多參數(shù)用逗號隔開
alert()警告框 / confirm()確認框(返回布爾值) / prompt("","提示語")提示框(返回輸入值或默認值/null)
console.log("")控制臺打印(console.clear()清空控制臺/cpnsole.warn()輸出警示/console.count()代碼被運行次數(shù)/console.table()表格輸出...)