1、var變量賦值不需要強(qiáng)制轉(zhuǎn)換,可以直接進(jìn)行賦值。 var a=1; a=“hello”;
2、JavaScript的工作方式:先解析代碼,獲取所有被聲明的變量,然后再一行一行地運(yùn)行。
因此導(dǎo)致所有的變量聲明語句都會被提升到代碼的頭部,這就叫做變量提升。
eg: console.log(a); var a=1;----------->var a;console.log(a);a = 1;(真正運(yùn)行的順序)
3、標(biāo)識符:JavaScript大小寫敏感。命名規(guī)則:第一個(gè)字符($ _ 字母) 第二個(gè)字符及以后($ _ 字母 數(shù)字)
4、JavaScript可以兼容HTML的注釋方法。 也被視為合法的單行注釋。–>只有在行首,才會被當(dāng)成單行注釋,否則會當(dāng)作正常的運(yùn)算。
5、區(qū)塊{ }對于var命令不構(gòu)成單獨(dú)的作用域。
6、標(biāo)簽(label):JavaScript 語言允許,語句的前面有標(biāo)簽(label),相當(dāng)于定位符,用于跳轉(zhuǎn)到程序的任意位置。
標(biāo)簽可以是任意的標(biāo)識符,但不能是保留字,語句部分可以是任意語句。
標(biāo)簽通常與break語句和continue語句配合使用,跳出特定的循環(huán)。格式:break 標(biāo)簽; continue 標(biāo)簽;
7、運(yùn)算符:typeof可以返回值的數(shù)據(jù)類型。通常使用在判斷語句當(dāng)中,用來檢查數(shù)據(jù)時(shí)候已經(jīng)被定義,防止報(bào)錯(cuò)。
空數(shù)組[ ]的類型也是object,這表示在 JavaScript 內(nèi)部,數(shù)組本質(zhì)上只是一種特殊的對象。這里順便提一下,instanceof運(yùn)算符可以區(qū)分?jǐn)?shù)組和對象。null返回object。
8、null和undefined的區(qū)別:null是一個(gè)表示“空”的對象,轉(zhuǎn)為數(shù)值時(shí)為0;undefined是一個(gè)表示"此處無定義"的原始值,轉(zhuǎn)為數(shù)值時(shí)為NaN。
9、數(shù)值范圍:JavaScript 能夠表示的數(shù)值范圍為21024到2-1023(開區(qū)間),超出這個(gè)范圍的數(shù)無法表示。
10、NaN是 JavaScript 的特殊值,表示“非數(shù)字”(Not a Number),主要出現(xiàn)在將字符串解析成數(shù)字出錯(cuò)的場合。
NaN不等于任何值,包括它本身。NaN與任何數(shù)(包括它自己)的運(yùn)算,得到的都是NaN。
11、parseInt():parseInt方法用于將字符串轉(zhuǎn)為整數(shù)。如果parseInt的參數(shù)不是字符串,則會先轉(zhuǎn)為字符串再轉(zhuǎn)換。
字符串轉(zhuǎn)為整數(shù)的時(shí)候,是一個(gè)個(gè)字符依次轉(zhuǎn)換,如果遇到不能轉(zhuǎn)為數(shù)字的字符,就不再進(jìn)行下去,返回已經(jīng)轉(zhuǎn)好的部分。
如果字符串的第一個(gè)字符不能轉(zhuǎn)化為數(shù)字(后面跟著數(shù)字的正負(fù)號除外),返回NaN。
所以,parseInt的返回值只有兩種可能,要么是一個(gè)十進(jìn)制整數(shù),要么是NaN。
parseInt方法還可以接受第二個(gè)參數(shù)(2到36之間),表示被解析的值的進(jìn)制,返回該值對應(yīng)的十進(jìn)制數(shù)。
12、parseFloat方法用于將一個(gè)字符串轉(zhuǎn)為浮點(diǎn)數(shù)。
isNaN方法可以用來判斷一個(gè)值是否為NaN。但是,isNaN只對數(shù)值有效,如果傳入其他值,會被先轉(zhuǎn)成數(shù)值。也就是說,isNaN為true的值,有可能不是NaN,而是一個(gè)字符串。
isFinite方法返回一個(gè)布爾值,表示某個(gè)值是否為正常的數(shù)值。
13、字符串:長字符串必須分成多行,可以在每一行的尾部使用反斜杠。輸出時(shí)還是單行輸出。
JavaScript 原生提供兩個(gè) Base64 相關(guān)的方法。
btoa():任意值轉(zhuǎn)為 Base64 編碼
atob():Base64 編碼轉(zhuǎn)為原來的值
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"
注意,這兩個(gè)方法不適合非 ASCII 碼的字符,會報(bào)錯(cuò)。
btoa(‘你好’) // 報(bào)錯(cuò)
要將非 ASCII 碼字符轉(zhuǎn)為 Base64 編碼,必須中間插入一個(gè)轉(zhuǎn)碼環(huán)節(jié),再使用這兩個(gè)方法。
14、對象:對象的鍵名都是字符串,加不加引號都可以,如果鍵名是數(shù)值會自動轉(zhuǎn)成字符串。如果鍵名不符合標(biāo)識名的條件,并且不是數(shù)字,則必須加上引號。
JavaScript在行首遇到{}時(shí),不清楚是表達(dá)式還是代碼塊,一律解釋成代碼塊。要解釋為表達(dá)式要在外面加圓括號,因?yàn)閳A括號里只能是表達(dá)式。
讀取屬性兩種方法:點(diǎn)運(yùn)算符、方括號運(yùn)算符。如果使用方括號運(yùn)算符,鍵名必須放在引號里面,否則會被當(dāng)作變量處理。obj[‘p’] // “Hello World”
如果使用點(diǎn)運(yùn)算符,屬性就是字符串;如果使用方括號運(yùn)算符,但是不使用引號,屬性就是一個(gè)變量。
注意,數(shù)值鍵名不能使用點(diǎn)運(yùn)算符(因?yàn)闀划?dāng)成小數(shù)點(diǎn))
JavaScript 允許屬性的“后綁定”,也就是說,你可以在任意時(shí)刻新增屬性,沒必要在定義對象的時(shí)候,就定義好屬性。并且可以使用點(diǎn)運(yùn)算符和方括號運(yùn)算符對屬性進(jìn)行賦值。
查看一個(gè)對象本身的所有屬性,可以使用Object.keys方法。
delete命令用于刪除對象的屬性,刪除成功后返回true。
in運(yùn)算符用于檢查對象是否包含某個(gè)屬性,它的左邊是一個(gè)字符串,表示屬性名,右邊是一個(gè)對象??梢允褂脤ο蟮膆asOwnProperty方法判斷一下,是否為對象自身的屬性。
for…in循環(huán)用來遍歷一個(gè)對象的全部屬性。(參考Java的foreach)
for…in循環(huán)有兩個(gè)使用注意點(diǎn):
它遍歷的是對象所有可遍歷(enumerable)的屬性,會跳過不可遍歷的屬性。toString屬性,默認(rèn)是“不可遍歷”的。
它不僅遍歷對象自身的屬性,還遍歷繼承的屬性。
with語句的格式如下:
with (對象) {
語句;
}
它的作用是操作同一個(gè)對象的多個(gè)屬性時(shí),提供一些書寫的方便。
with (document.links[0]){
console.log(href);
console.log(title);
console.log(style);
}
// 等同于
console.log(document.links[0].href);
console.log(document.links[0].title);
console.log(document.links[0].style);
15、函數(shù):使用function聲明函數(shù)。函數(shù)與其他數(shù)據(jù)類型地位平等,所以在 JavaScript 語言中又稱函數(shù)為第一等公民。同時(shí)具有變量提升的特性。
常用屬性:name、length、toString
arguments對象包含了函數(shù)運(yùn)行時(shí)的所有參數(shù),arguments[0]就是第一個(gè)參數(shù),以此類推。這個(gè)對象只有在函數(shù)體內(nèi)部,才可以使用。
雖然arguments很像數(shù)組,但它是一個(gè)對象。數(shù)組專有的方法(比如slice和forEach),不能在arguments對象上直接使用。
如果要讓arguments對象使用數(shù)組方法,真正的解決方法是將arguments轉(zhuǎn)為真正的數(shù)組。下面是兩種常用的轉(zhuǎn)換方法:slice方法和逐一填入新數(shù)組。
var args = Array.prototype.slice.call(arguments); //slice轉(zhuǎn)換
arguments對象帶有一個(gè)callee屬性,返回它所對應(yīng)的原函數(shù)。
閉包的實(shí)現(xiàn):函數(shù)內(nèi)嵌套函數(shù),封裝,內(nèi)存消耗較大,不建議濫用。
16、數(shù)組:數(shù)組的本質(zhì)是一種特殊的對象。數(shù)組的length可以動態(tài)變化。
只要有l(wèi)ength屬性,就可以認(rèn)為這個(gè)對象類似于數(shù)組。但是有一個(gè)問題,這種length屬性不是動態(tài)值,不會隨著成員的變化而變化。
“類似數(shù)組的對象”還有一個(gè)辦法可以使用數(shù)組的方法,就是通過call()把數(shù)組的方法放到對象上面。
function print(value, index) {
console.log(index + ' : ' + value);
}
Array.prototype.forEach.call(arrayLike, print);
上面代碼中,arrayLike代表一個(gè)類似數(shù)組的對象,本來是不可以使用數(shù)組的forEach()方法的,但是通過call(),可以把forEach()嫁接到arrayLike上面調(diào)用。文章來源:http://www.zghlxwxcb.cn/news/detail-524564.html
// forEach 方法
function logArgs() {
Array.prototype.forEach.call(arguments, function (elem, i) {
console.log(i + '. ' + elem);
});
}
17、運(yùn)算符
指數(shù)運(yùn)算符是右結(jié)合,而不是左結(jié)合。即多個(gè)指數(shù)運(yùn)算符連用時(shí),先進(jìn)行最右邊的計(jì)算。文章來源地址http://www.zghlxwxcb.cn/news/detail-524564.html
// 相當(dāng)于 2 ** (3 ** 2)
2 ** 3 ** 2
// 512
到了這里,關(guān)于【JavaScript_1】入門知識、數(shù)據(jù)類型、運(yùn)算符的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!