操作符
只能操作一個(gè)值得操作符叫做一元操作符
遞增和遞減操作符? 執(zhí)行前置遞增操作符時(shí)坚踩,變量的值都是在語句被求值以前改變的长已,后置遞增和遞減與前置遞增和遞減有個(gè)非常重要的區(qū)別郎嫁,即遞增和遞減操作是包含他媽的語句被求值之后才執(zhí)行的
一元加和減操作符 放在數(shù)值前面堕花,對數(shù)值不會(huì)產(chǎn)生任何影響未舟,一元減操作符主要用于表示負(fù)數(shù)圈暗。一元加和減操作符主要用于基本的算術(shù)運(yùn)算。
布爾操作符??
1)邏輯非:由一個(gè)嘆號(T0颉)表示员串,可以應(yīng)用于ECMAScript中的任何值,無論值是什么最后都返回一個(gè)布爾值昼扛,邏輯非操作符首先會(huì)將他的操作數(shù)轉(zhuǎn)換為一個(gè)布爾值寸齐,然后在對齊求反。
2)邏輯與:由兩個(gè)和號(&&)表示抄谐,有兩個(gè)操作數(shù)渺鹦,應(yīng)用于任何類型的操作數(shù),而不僅僅是布爾值斯稳。邏輯與操作屬于短路操作海铆,即如果第一個(gè)操作數(shù)能夠決定結(jié)果,那么久不會(huì)再對第二個(gè)操作數(shù)求值挣惰,對于邏輯與操作而言卧斟,如果第一個(gè)操作數(shù)是false,則無論第二個(gè)操作數(shù)是什么值,結(jié)構(gòu)都不再可能是ture了憎茂。不能再邏輯與操作中使用未定義的值珍语。
3)邏輯或:與邏輯與操作相似,如果有一個(gè)操作數(shù)不是布爾值竖幔,邏輯或也不一定返回布爾值板乙。
乘性操作符
1)乘法:*號表示 如果有個(gè)一個(gè)操作值不是數(shù)值,則在后臺(tái)用用Number()講其轉(zhuǎn)化為數(shù)值。在進(jìn)行操作募逞。
2)除法 用/ 斜杠表示?
3)求模(余數(shù)) 用%表示
加性操作符
1)加法(+)
如果兩個(gè)操作數(shù)都是字符串蛋铆,則將第二個(gè)糙操作數(shù)與第一個(gè)操作數(shù)拼接起來,如果只有一個(gè)操作數(shù)是字符串放接,則將兩一個(gè)操作數(shù)轉(zhuǎn)化為字符串刺啦,將著兩個(gè)字符串片接起來。
如果一個(gè)操作數(shù)是對象纠脾、數(shù)值或布爾值玛瘸,則調(diào)用她們的toString()方法取得相應(yīng)的字符串值。
2)減法(-)
如果有個(gè)操作符是對象苟蹈,則調(diào)用對象的valueOf()方法以取得表示該對象的數(shù)值糊渊。
關(guān)系操作符
小于(<) 大于(>) 小于等于(<=) 大于等于(>=)都是對兩個(gè)值進(jìn)行比較,返回一個(gè)布爾值
在比較字符串時(shí)慧脱,實(shí)際比較的是兩個(gè)字符串中對應(yīng)位置的每個(gè)字符的字符編碼值渺绒。經(jīng)過這么一比較之后,在返回一個(gè)布爾值磷瘤。
相等操作符
相等(==? )和不相等(!=)? 先轉(zhuǎn)化在比較? ?
全等(===)和不相等(!==) 勁比較而不轉(zhuǎn)換
條件操作符
賦值操作符
用等于號(=)表示芒篷,作用就是把右邊的值付給左邊的變量
逗號操作符
使用逗號操作符可以在一條語句中執(zhí)行多個(gè)操作
語句
語句通常使用一或多個(gè)關(guān)鍵字來完成給定的任務(wù)搜变。
1)if語句
2)do-while語句? ? 是一種后側(cè)試循環(huán)語句采缚,即只有在循環(huán)體中的代碼執(zhí)行之后,才會(huì)測試給出條件
3)while語句 屬于前測試循環(huán)語句挠他。
4)for語句 也是一種錢測試循環(huán)語句
5)for-in 語句 是一種精準(zhǔn)的迭代語句扳抽,可以用來枚舉對象的屬性。
6)label 語句? 可以在代碼中添加標(biāo)簽殖侵,一遍將來使用
7)break 和 continue 語句 用于循環(huán)中精準(zhǔn)的控制代碼執(zhí)行贸呢。
8)with 語句 將代碼的作用域社會(huì)到一個(gè)特定的對象中
9)switch 語句? 與if語句的關(guān)系最為密切 可以使用任何數(shù)據(jù)類型
函數(shù)
使用function關(guān)鍵字來聲明,后跟一組參數(shù)以及函數(shù)體
function sayHi (name , message){
slert("Hello" + name + "," + message)
}
在函數(shù)體內(nèi)可以通過arguments對象來訪問這個(gè)參數(shù)數(shù)組拢军,從而獲取傳遞給函數(shù)的每一個(gè)參數(shù)楞陷。
特點(diǎn):命名的參數(shù)只提供便利,但不是必須的茉唉。另外固蛾,在命名參數(shù)方面,其他語言可能需要事先創(chuàng)建一個(gè)函數(shù)簽名度陆,而將來的調(diào)用必須與該簽名一致艾凯。
另個(gè)一個(gè)重要方面,就是arguments 對象可以與命名參數(shù)一起使用懂傀。
function doAdd (num1,num2){
if(arguments.legth == 1){
? ? alert(num1 + 10);
}else if (arguments.length == 2){
alert (arguments[0] + num2);
}
}
關(guān)于參數(shù):沒有傳地值得命名參與獎(jiǎng)自動(dòng)被賦予undefined
變量趾诗、作用域和內(nèi)存問題
js變量松散型的本質(zhì),決定了它只是在特定時(shí)間用于保存特定值的一個(gè)名字而已蹬蚁。
ECMAScript 變量可能包含兩種不同數(shù)據(jù)類型的值:基本類型值和引用類型值恃泪,基本類型值指的事簡單的數(shù)據(jù)段郑兴, 而引用類型值指的是那些可能有多個(gè)值構(gòu)成的對象。
1)動(dòng)態(tài)的屬性
定義基本類型值和應(yīng)用類型值的方式是類似的贝乎,創(chuàng)建一個(gè)變量并為該變量賦值杈笔,但是,當(dāng)這個(gè)值保存到變量中以后糕非,對不同類型值可以執(zhí)行的操作則大相徑庭蒙具。對于引用類型的值,我們可以為其添加屬性和方法朽肥,也可以改變和刪除其屬性和方法禁筏。
2)復(fù)制變量值
除了保存的方式不同之外,在叢一個(gè)變量像兩一個(gè)變量復(fù)制基本類型值和引用類型值時(shí)衡招,也存在不同篱昔。如果從一個(gè)變量像另一個(gè)變量復(fù)制基本類型的值,會(huì)在變量對象上創(chuàng)建一個(gè)新值始腾,然后把該值復(fù)制到為新變量分配的位置上州刽。
3)傳遞參數(shù)
ECMAScript 中左右函數(shù)的參數(shù)都是按值傳遞的痕鳍。
4)檢測類型? ?使用typeof操作符確定檢測
執(zhí)行環(huán)境及作用域
執(zhí)行環(huán)境定義了變量或函數(shù)有券訪問的其他數(shù)據(jù)只嚣,決定了她們各自的行為。每個(gè)執(zhí)行環(huán)境都有一個(gè)與之關(guān)聯(lián)的變量對象客蹋,環(huán)境中定義的所有變量和函數(shù)都保存這個(gè)對象中奶栖。
每個(gè)函數(shù)都有自己的執(zhí)行環(huán)境匹表,當(dāng)執(zhí)行流進(jìn)入一個(gè)函數(shù)時(shí),函數(shù)的環(huán)境就會(huì)被推出一個(gè)環(huán)境棧中宣鄙。而在行數(shù)執(zhí)行之后袍镀,棧將掐黃精彈出,被控制權(quán)返回給之前的執(zhí)行環(huán)境冻晤。
當(dāng)代碼在一個(gè)環(huán)境執(zhí)行時(shí)苇羡,會(huì)創(chuàng)建變量對象的一個(gè)作用域鏈。作用域鏈的用途鼻弧,是保證對執(zhí)行環(huán)境有券訪問的所有變量和函數(shù)的有序訪問设江。