摘要:詞法結(jié)構(gòu)字符集字符集程序是用字符集編寫(xiě)的注釋支持兩種格式的注釋單行注釋另一個(gè)注釋也是一個(gè)注釋這是一個(gè)多行注釋直接量直接量程序中直接使用的數(shù)據(jù)值標(biāo)識(shí)符和保留字標(biāo)識(shí)符就是一個(gè)名字,用來(lái)對(duì)變量和函數(shù)命名,或者用作代碼中某些循環(huán)語(yǔ)句中的跳轉(zhuǎn)位置的標(biāo)
1 詞法結(jié)構(gòu) 1.1 字符集
字符集:JS程序是用Unicode字符集編寫(xiě)的
1.2 注釋js支持兩種格式的注釋
// 單行注釋 /* 另一個(gè)注釋 */ //也是一個(gè)注釋 /*
這是一個(gè)
多行注釋
*/
直接量literal:程序中直接使用的數(shù)據(jù)值
12 //number true //boolean "hello" //string 1.2 //float [1, 2, 3] //array var obj = { name: "Oli", age: 18 }; //object1.4 標(biāo)識(shí)符和保留字
標(biāo)識(shí)符:就是一個(gè)名字,用來(lái)對(duì)變量和函數(shù)命名,或者用作JavaScript代碼中某些循環(huán)語(yǔ)句中的跳轉(zhuǎn)位置的標(biāo)記
保留字:JavaScript把一些標(biāo)識(shí)符拿出來(lái)用作自己的關(guān)鍵字
2 類(lèi)型、值和變量數(shù)據(jù)類(lèi)型type:能夠表示并操作的值的類(lèi)型叫做數(shù)據(jù)類(lèi)型(type)
可擁有方法的類(lèi)型
不可擁有方法的類(lèi)型
可變類(lèi)型:可修改的,如對(duì)象和數(shù)組
不可變類(lèi)型:不可修改的,如數(shù)字、布爾值、null和undefined
變量variable:變量是一個(gè)值的符號(hào)名稱(chēng),可以通過(guò)名稱(chēng)獲得對(duì)值的引用
全局變量global variable:不在任何函數(shù)內(nèi)聲明的變量稱(chēng)為全局變量
數(shù)據(jù)類(lèi)型
原始類(lèi)型(Primitive type)
數(shù)字
字符串
布爾值
null(空)
undefined(未定義)
對(duì)象類(lèi)型(object type)
對(duì)象object:對(duì)象 (object)是屬性(property)的集合,每個(gè)屬性都由"名/值對(duì)"構(gòu)成。
無(wú)序集合:普通的javascript對(duì)象是“命名值”的無(wú)須集合
有序集合:數(shù)組array,表示帶編號(hào)的值的有序集合
函數(shù)function:是具有與它想關(guān)聯(lián)的可執(zhí)行代碼的對(duì)象,通過(guò)調(diào)用函數(shù)來(lái)運(yùn)行科執(zhí)行代碼,并返還運(yùn)算結(jié)果
構(gòu)造函數(shù)constructor:如果函數(shù)初始化(使用new運(yùn)算符)一個(gè)新建對(duì)象,我們稱(chēng)之為構(gòu)造函數(shù)
類(lèi)class:構(gòu)造函數(shù)初始化對(duì)象組成的集合
數(shù)組array類(lèi)
函數(shù)function類(lèi)
日期date類(lèi)
正則regexp類(lèi)
錯(cuò)誤error類(lèi)
2.1 數(shù)字數(shù)字直接量(numeric literal):當(dāng)一個(gè)數(shù)字直接出現(xiàn)在javascript程序中,我們陳之為數(shù)字直接量
2.1.1 整型直接量由于某些javascript的實(shí)現(xiàn)支持八進(jìn)制的直接量,而有些不支持,因此最好不要使用以0為前綴的整數(shù)直接量。在ECMAScript6的嚴(yán)格模式下,八進(jìn)制的直接量是明令禁止的。
2.1.2 浮點(diǎn)型直接量語(yǔ)法:[digits][.digits][(E|e)[(+|-)]digits]
3.14 0.14 3.14e12 0.14E-212.1.3 算術(shù)運(yùn)算
javascript中的算術(shù)運(yùn)算在溢出(overflow)、下溢(underflow)或被零整除時(shí)不會(huì)報(bào)錯(cuò)。
溢出overflow:數(shù)字運(yùn)算結(jié)果超過(guò)了javascript中所能表示的數(shù)字上線
下溢underflow:當(dāng)運(yùn)算結(jié)果無(wú)線接近于零并比 javascript能表示的最小值還小
全局變量Infinaty和NaN在ECMAScipt3中,這兩個(gè)值是可以讀寫(xiě)的。ECMAScript5修正了這個(gè)問(wèn)題,將他們定義為只讀的
isNaN():參數(shù)是NaN或者是一個(gè)非數(shù)字值(比如字符串和對(duì)象),則返回true
isFinite():參數(shù)不是NaN、Infinty或-Infinity的時(shí)候返回true
2.1.4 二進(jìn)制浮點(diǎn)數(shù)和四舍五入錯(cuò)誤javascript中使用實(shí)數(shù)的時(shí)候,常常只是真實(shí)值的一個(gè)近似的表示
金融計(jì)算時(shí),要使用整數(shù)“分”,而不要使用小數(shù)“元”進(jìn)行基于貨幣單位的運(yùn)算
3.1.5 日期和時(shí)間Date()構(gòu)造函數(shù)
2.2 文本字符串(string):是一組16位值組成的不可變的有序序列,每個(gè)字符通常來(lái)自于Unicode字符集
javascript采用UTF-16編碼的Unicode字符集
最常用的Unicode字符都是通過(guò)16位的內(nèi)碼表示,并代表字符串中的單個(gè)字符;不能表示為16位的Unicode字符則遵循UTF-16編碼規(guī)則——用兩個(gè)16位值組成一個(gè)序列(亦稱(chēng)為“代理項(xiàng)對(duì)”)表示。這意味著一個(gè)長(zhǎng)度為2的javascript字符串(兩個(gè)16位值)可能表示一個(gè)Unicode字符
2.2.1 字符串直接量ECMAScript 3中字符串直接量必須寫(xiě)在一行;
ECMAScript 5中可以拆分成數(shù)行,每行必須以結(jié)束
如果想另起一行,則需要用轉(zhuǎn)義字符
var x = "hello moto! goodby nokia!"; console.log(x); //hello moto! goodby nokia! var y = "hello moto! goodby nokia!"; console.log(y); //hello moto! //goodby nokia!2.2.2 轉(zhuǎn)義字符
兩個(gè)轉(zhuǎn)義字符的通用版本:
xXX:十六進(jìn)制數(shù)表示Latin-1
uXXXX:u表示Unicode中的任意字碼
var x = "xA9"; console.log(x); //? A9為16進(jìn)制數(shù),表示Latin-1中的字碼 var y = "hello u000A there"; console.log(y); //表示換行符,其中u表示4個(gè)十六進(jìn)制數(shù)指定的任意Unicode字符 var z = "hello there"; console.log(z); //也可以用 表示換行符
可以在這里查看Unicode字符集Unicode字符百科;
2.2.3 字符串的使用ECMAScript 5中,字符串可以當(dāng)做只讀數(shù)組,用方括號(hào)語(yǔ)法來(lái)訪問(wèn)單個(gè)字符
2.2.4 匹配模式JavaScript采用Perl中的正則表達(dá)式語(yǔ)法
2.3 布爾值布爾值boolean:指代真假、開(kāi)關(guān)、是否,即保留字true和false
假值(falsy value):false以及能夠被轉(zhuǎn)換成false的值;
真值(truthy value):true以及能夠被轉(zhuǎn)換成true的值;
2.4 null和undefinednull空值:可以表示數(shù)字、字符串和對(duì)象是“無(wú)值”的
undefined空缺:表明變量沒(méi)有初始化
ECMAScript 3:undefined是可讀寫(xiě)的變量;
ECMAScript 5:undefined則是只讀的;
2.5 全局對(duì)象全局對(duì)象的初始屬性并不是保留字,但它們應(yīng)該當(dāng)做保留字來(lái)對(duì)待
//代碼的最頂級(jí)可用this來(lái)引用全局對(duì)象 var str = "Hello World"; var global = this; console.log(global.str); console.log(str); console.log(this.str); //上面三中寫(xiě)法都是一樣的2.6 包裝對(duì)象
字符串、數(shù)字等的屬性都是只讀的,且不能給他們定義心屬性;
當(dāng)視圖給他們定義屬性或修改屬性時(shí),修改只發(fā)生在臨時(shí)對(duì)象身上;
var s = "str"; s.len = 4; console.log(s.len); //undefined 臨時(shí)對(duì)象的修改,隨即被“銷(xiāo)毀”
JavaScript會(huì)在必要時(shí)將包裝對(duì)象轉(zhuǎn)換成原始值:
var a = "test"; var b = 1; var c = true; var A = new String(a); var B = new Number(b); var C = new Boolean(c); console.log(A); //String對(duì)象 console.log(B); //Number對(duì)象 console.log(C); //Boolean對(duì)象 console.log(a == A); //true console.log(a === A); //false console.log(typeof a); //string console.log(typeof A); //object2.7 不可變的原始值和可變的對(duì)象引用
JavaScript中原始值(undefined、null、布爾值、數(shù)字和字符串)與對(duì)象(對(duì)象、數(shù)組、函數(shù))不同;前者是不可變的,后者才可變;
如字符串修改后仿佛修改了原來(lái)的值,實(shí)際上是創(chuàng)建了新的字符串:
var s = "string"; s.toUpperCase(); console.log(s); //string原始值沒(méi)有變化
對(duì)象則是可變的:
var obj = { name: "oliver", age: 18 }; obj.name = "alice"; console.log(obj.name) //alice
字符串的比較只要每個(gè)索引上的值都相等且長(zhǎng)度相等就是相等,而對(duì)象包含的屬性及值都相同,但也是不相等的:
var s = "string"; var S = "string"; console.log(s === S); //True var obj = { name: "oli" }; var OBJ = { name: "oli" }; console.log(obj === OBJ); //False var a = [1,2]; var A = [1,2]; console.log(a === A); //False
對(duì)象就是引用類(lèi)型(reference type);
對(duì)象值就是引用;
對(duì)象的比較就是引用的比較,當(dāng)且僅當(dāng)它們引用同一個(gè)基對(duì)象時(shí),他們才相等:
var a = []; var b = a; b[0] = 1; console.log(a[0]); //1 導(dǎo)致引用的數(shù)組也被修改 console.log(a === b); //True
如何復(fù)制數(shù)組呢:
var a = [1,2,3]; var b = []; for (var i = 0; i < a.length; i++) { b[i] = a[i]; }; console.log(b.toString()); //1,2,3 //或者用concat方法 var a = [1,2,3]; var b = a.concat(); b[0] = 0; console.log(b.toString()); console.log(a.toString());
比較兩個(gè)數(shù)組:
// var a = [1, 2, 3]; // var b = a.concat(); function compareArray(a, b) { if (a.length !== b.length) { return false; } for (var i = 0; i < a.length; i++) { if (a[i] !== b[i]) { return false; } }; return true; } // console.log(compareArray(a, b)); //True2.8 類(lèi)型轉(zhuǎn)換 2.8.1 轉(zhuǎn)換和相等性
==:等于運(yùn)算符
===:恒等運(yùn)算符
2.8.2 顯式類(lèi)型轉(zhuǎn)換為了使得代碼可讀性增強(qiáng),需要用到顯式轉(zhuǎn)換(Number()、String()等)
數(shù)字轉(zhuǎn)換成字符串
Number類(lèi)定義的toString()方法可以接收表示轉(zhuǎn)換基數(shù)(radix)的可選參數(shù):
var x = 12315; console.log(x.toString(16)); //301b
數(shù)字轉(zhuǎn)換成浮點(diǎn)型或整型
toFixed():根據(jù)小數(shù)點(diǎn)后的指定位數(shù)將數(shù)字轉(zhuǎn)換為字符串,不使用指數(shù)計(jì)數(shù)法;
toExponential():使用指數(shù)計(jì)數(shù)法
toPrecision():根據(jù)指定的有效數(shù)字位數(shù)將數(shù)字轉(zhuǎn)換成字符串
var n = 123456.789; console.log(n.toFixed(0)); //1234567 console.log(n.toFixed(2)); //123456.79 console.log(n.toFixed(5)); //123456.78900 console.log(n.toExponential(1)); //1.2e+5 console.log(n.toExponential(3)); //1.235e+5 console.log(n.toExponential(10)); //1.2345678900e+5 console.log(n.toPrecision(4)); //1.235e+5 console.log(n.toPrecision(8)); //123456.79 console.log(n.toPrecision(10)); //123456.7890
字符串轉(zhuǎn)換成數(shù)字
parseInt():解析整數(shù)
parseFloat():解析整數(shù)和浮點(diǎn)數(shù),接收第二個(gè)參數(shù)為基數(shù)
var s = "3.14 pi"; console.log(parseInt(s)); //3 console.log(parseFloat(s)); //3.14 var S = "0.123 hello"; console.log(parseInt(S)); //0 console.log(parseFloat(S)); //0.123 var x = ".12 good"; console.log(parseInt(x)); //NaN console.log(parseFloat(x)); //0.12 var X = "$0.123 hello"; console.log(parseInt(X)); //NaN console.log(parseFloat(X)); //NaN2.8.3 對(duì)象轉(zhuǎn)換成原始值
toString()
valueOf()
2.9 變量聲明ECMAScript 5嚴(yán)格模式下如果給一個(gè)沒(méi)有聲明的變量賦值會(huì)報(bào)錯(cuò):
"use strict"; x = 10; //報(bào)錯(cuò)2.10 變量作用域
變量作用域(scope)是程序源代碼中定義這個(gè)變量的區(qū)域
2.10.1 函數(shù)作用域和聲明提升(提前)塊級(jí)作用域(block scope)
聲明提前(hoisting):函數(shù)里聲明的所有變量(不涉及賦值)都被“提前”至函數(shù)體的頂部:
//函數(shù)內(nèi)部的局部變量遮蓋了同名的全局變量,在執(zhí)行到var的時(shí)候才會(huì)真正的被賦值 var scope = "global"; function fc () { console.log(scope); //undefined var scope = "local"; console.log(scope); //local } fc(); //此處沒(méi)有同名的局部變量,所以輸出全局變量的值global var scope = "global"; function fc () { console.log(scope); //global } fc();
正確的書(shū)寫(xiě)方式:
//上述代碼應(yīng)該寫(xiě)成: var scope = "global"; function fc () { var scope; console.log(scope); //undefined scope = "local"; console.log(scope); //local } fc();
先聲明再賦值或使用
2.10.2 作為屬性的變量使用var聲明一個(gè)變量是不可配置的(不可用delete)
"use strict" var x = 10; this.y = 10; delete this.y; delete x; //報(bào)錯(cuò)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/79007.html
摘要:核心概念原則響應(yīng)式瀏覽器支持預(yù)處理器響應(yīng)式模塊化官網(wǎng)地址地址名稱(chēng)類(lèi)別語(yǔ)言創(chuàng)建者云適配最后更新時(shí)間年月人氣在上有描述國(guó)內(nèi)首個(gè)開(kāi)源跨屏前端框架,中文排版支持更優(yōu)本土化組件豐富。 2015年已經(jīng)過(guò)去了,作為一個(gè)前端開(kāi)發(fā)者,我覺(jué)得有必要把過(guò)去一年幫助過(guò)我或朋友們的優(yōu)秀開(kāi)源前端框架做個(gè)盤(pán)點(diǎn),希望這些項(xiàng)目能夠越來(lái)越好,幫助到更多的前端開(kāi)發(fā)者們。此榜單根據(jù)github上star數(shù)作為排名依據(jù),一個(gè)人...
摘要:核心概念原則響應(yīng)式瀏覽器支持預(yù)處理器響應(yīng)式模塊化官網(wǎng)地址地址名稱(chēng)類(lèi)別語(yǔ)言創(chuàng)建者云適配最后更新時(shí)間年月人氣在上有描述國(guó)內(nèi)首個(gè)開(kāi)源跨屏前端框架,中文排版支持更優(yōu)本土化組件豐富。 2015年已經(jīng)過(guò)去了,作為一個(gè)前端開(kāi)發(fā)者,我覺(jué)得有必要把過(guò)去一年幫助過(guò)我或朋友們的優(yōu)秀開(kāi)源前端框架做個(gè)盤(pán)點(diǎn),希望這些項(xiàng)目能夠越來(lái)越好,幫助到更多的前端開(kāi)發(fā)者們。此榜單根據(jù)github上star數(shù)作為排名依據(jù),一個(gè)人...
摘要:核心概念原則響應(yīng)式瀏覽器支持預(yù)處理器響應(yīng)式模塊化官網(wǎng)地址地址名稱(chēng)類(lèi)別語(yǔ)言創(chuàng)建者云適配最后更新時(shí)間年月人氣在上有描述國(guó)內(nèi)首個(gè)開(kāi)源跨屏前端框架,中文排版支持更優(yōu)本土化組件豐富。 2015年已經(jīng)過(guò)去了,作為一個(gè)前端開(kāi)發(fā)者,我覺(jué)得有必要把過(guò)去一年幫助過(guò)我或朋友們的優(yōu)秀開(kāi)源前端框架做個(gè)盤(pán)點(diǎn),希望這些項(xiàng)目能夠越來(lái)越好,幫助到更多的前端開(kāi)發(fā)者們。此榜單根據(jù)github上star數(shù)作為排名依據(jù),一個(gè)人...
摘要:概述本文主要介紹了我對(duì)的一些核心特性的理解,包括架構(gòu)特點(diǎn)機(jī)制核心模塊與簡(jiǎn)單應(yīng)用。在此期間,主線程繼續(xù)執(zhí)行其他任務(wù)。延續(xù)了瀏覽器端單線程,只用一個(gè)主線程執(zhí)行,不斷循環(huán)遍歷事件隊(duì)列,執(zhí)行事件。 原文地址在我的博客,轉(zhuǎn)載請(qǐng)注明來(lái)源,謝謝! node是在前端領(lǐng)域經(jīng)常看到的詞。node對(duì)于前端的重要性已經(jīng)不言而喻,掌握node也是作為合格的前端工程師一項(xiàng)基本功了。知道node、知道后端的一些東西...
摘要:簡(jiǎn)介原文鏈接簡(jiǎn)稱(chēng)是一種輕量級(jí),解釋型的編程語(yǔ)言,其函數(shù)是一等公民。標(biāo)準(zhǔn)的目標(biāo)是讓任何一種程序設(shè)計(jì)語(yǔ)言能操控使用任何一種標(biāo)記語(yǔ)言編寫(xiě)出的任何一份文檔。核心規(guī)定了如何映射基于的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔的任意部分的訪問(wèn)和操作。 JavaScript 簡(jiǎn)介 原文鏈接 JavaScript ( 簡(jiǎn)稱(chēng):JS ) 是一種 輕量級(jí),解釋型 的編程語(yǔ)言,其函數(shù)是一等公民。眾所周知,它是用于網(wǎng)頁(yè)開(kāi)發(fā)的腳...
閱讀 3207·2021-09-22 15:05
閱讀 2763·2019-08-30 15:56
閱讀 1071·2019-08-29 17:09
閱讀 805·2019-08-29 15:12
閱讀 2088·2019-08-26 11:55
閱讀 3074·2019-08-26 11:52
閱讀 3382·2019-08-26 10:29
閱讀 1386·2019-08-23 17:19