javascript
JavaScript基础要点
一、值和類型及運(yùn)算
?
JavaScript中的六種基本值類型
數(shù)字(number)、字符串(string)、布爾值(boolean)、對(duì)象(object)、函數(shù)(function)、未定義類型(undefined)。
?
NaN
NaN是number類型,但我們用它來(lái)表示 “非數(shù)值” 。這樣來(lái)理解它:對(duì)于一個(gè)期望返回number類型值的運(yùn)算,但js卻對(duì)表達(dá)式中的運(yùn)算過(guò)程很困惑,于是就返回了一個(gè)NaN(not a number)給你,用來(lái)告訴你這個(gè)運(yùn)算是非法的,結(jié)果是不精確的或毫無(wú)意義的。
在js中只有一個(gè)值不等于其自身,這個(gè)值就是NaN!
console.log(typeof NaN); console.log("string" - 1) console.log(NaN == NaN) -------------------------------------------? number
? NaN
? false
?
變量
我們可以把變量想象成許多的觸須,而不是一個(gè)箱子。變量中并不包含值,而是會(huì)引用這些值。
?
字符串
在對(duì)字符串進(jìn)行比較時(shí),JavaScript按照從左到右逐個(gè)比較每個(gè)字符對(duì)應(yīng)的ASCII碼值。
?
強(qiáng)制類型轉(zhuǎn)換
當(dāng)運(yùn)算符作用在錯(cuò)誤類型的值上時(shí),JavaScript會(huì)自動(dòng)將其轉(zhuǎn)換成自己期望的值,這種操作稱為強(qiáng)制類型轉(zhuǎn)換。
?
邏輯運(yùn)算符的短路特性
對(duì)于或運(yùn)算符 || ,從左到右遇見(jiàn)第一個(gè)true就發(fā)生短路,對(duì)于與運(yùn)算符 && ,從左到右遇見(jiàn)第一個(gè)false就發(fā)生短路。短路之后立刻就返回這個(gè)短路值,不再進(jìn)行計(jì)算后面的表達(dá)式。
?
null 和 undefined
對(duì)于 == 運(yùn)算,如果運(yùn)算符兩側(cè)存在null或undefined,那么只有兩側(cè)均為null 或undefined時(shí),結(jié)果才為true。
console.log(null == 0) console.log(null == undefined) -------------------------------------------? false
? true
?
二、函數(shù)
?
定義
定義一個(gè)函數(shù)就是定義一個(gè)普通的變量,只不過(guò)變量的類型是函數(shù)(function)。例如,下面的代碼定義了一個(gè)變量square,引用了一個(gè)函數(shù):
var square = function(x){return x * x; } console.log(square(12));---------------------------------------
144
和大多數(shù)編程語(yǔ)言一樣,JavaScript也可以這樣聲明函數(shù):
function square(x){return x * x; } console.log(square(12)); ---------------------------------------144
?
可以在任何位置調(diào)用已經(jīng)聲明的函數(shù)。這是因?yàn)?#xff0c;當(dāng)代碼執(zhí)行時(shí),函數(shù)的聲明會(huì)被移到其作用域的頂端,所有作用域內(nèi)的函數(shù)調(diào)用都不會(huì)有任何問(wèn)題。并且在JavaScript中,函數(shù)可以嵌套定義。
?
參數(shù) 和 作用域
在函數(shù)內(nèi)部創(chuàng)建的變量和參數(shù),都屬于函數(shù)的局部變量。
var x = 0; var test = function(x){x = 1; } console.log(x); //可以看到全局變量中x的值并未改變---------------------------------------
0
?
JavaScript對(duì)傳入函數(shù)的參數(shù)數(shù)量沒(méi)有限制。如果有多余的參數(shù),則它們會(huì)被忽略掉;未傳入實(shí)值的參數(shù),會(huì)被賦值為 undefined。
?
創(chuàng)建一個(gè)匿名函數(shù)并立刻執(zhí)行的語(yǔ)法
要用小括號(hào)把函數(shù)的定義括起來(lái)。例如:
(function() {console.log("Hello"); })();?
如果寫成下面這樣,將會(huì)報(bào)錯(cuò):
function() {console.log("Hello"); }(); // SyntaxError?
對(duì)于有參數(shù)的匿名函數(shù)可以這樣寫:
var x = (function(x) {return x*x; })(3); console.log(x); // 9?
?
?三、對(duì)象類型:object
對(duì)象
object類型的值可以存儲(chǔ)任意類型的屬性,我們可以隨意增刪這些屬性。一種創(chuàng)建對(duì)象的方法是使用花括號(hào){}:
/*屬性之間用逗號(hào)分隔,屬性定義方式是 propName: propValue,
如果propName不是有效的變量名或數(shù)字,則需使用引號(hào)將其括起來(lái)
var me = {myName: "Mr Hu",myAge: 20,myHobby: ["English", "sing", "travel", "chat"],"I Love You": true, } console.log("my age is " + me.myAge); console.log("I Love You:" + me["I Love You"]); console.log("The type of me is: " + typeof me);
------------------------------------------------------------
? my age is 20
? I Love You:true
? The type of me is: object
?學(xué)過(guò)python的朋友會(huì)發(fā)現(xiàn)JavaScript中的對(duì)象和Python中的字典十分十分相似。
?
?屬性
在JavaScript中,幾乎所有的值都有屬性,但null和undefined沒(méi)有。
訪問(wèn)屬性的方法有兩種:
?
?= 運(yùn)算符
我們可以使用 = 運(yùn)算符來(lái)給一個(gè)屬性表達(dá)式賦值。如果該屬性已經(jīng)存在,那么新值將替換舊值;如果之前不存在該屬性,則會(huì)自動(dòng)創(chuàng)建該屬性并賦予新值。
?
delete 運(yùn)算符
我們可以使用 delete 運(yùn)算符移除目標(biāo)對(duì)象的指定屬性。
?
四、語(yǔ)法
分號(hào)
JavaScript并不強(qiáng)制要求在每個(gè)語(yǔ)句的結(jié)尾加分號(hào),瀏覽器中負(fù)責(zé)執(zhí)行js代碼的引擎會(huì)自動(dòng)在每個(gè)語(yǔ)句之后加上分號(hào),但這種情況可能會(huì)改變程序的語(yǔ)義,導(dǎo)致運(yùn)行結(jié)果與我們的期望不一致。所以建議在每個(gè)語(yǔ)句后面手動(dòng)加上分號(hào)。
?
?
?
?
?
?
?
?
?
?代碼編寫規(guī)范
建議在循環(huán)語(yǔ)句或if語(yǔ)句中,無(wú)論其中執(zhí)行體中是有一行代碼還是多行代碼,都將其包裝在花括號(hào)中。
建議使用駝峰命名。
?
轉(zhuǎn)載于:https://www.cnblogs.com/huwt/p/10597502.html
總結(jié)
以上是生活随笔為你收集整理的JavaScript基础要点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ThreadPoolExecutor(一
- 下一篇: JSR303校验的简单使用以及自定义校验