成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript基本語(yǔ)法(一)

shiina / 2282人閱讀

摘要:目錄語(yǔ)句變量小結(jié)基本語(yǔ)法一是核心知識(shí)點(diǎn)的基本語(yǔ)法的第一部分,主要介紹了語(yǔ)句表達(dá)式變量和數(shù)據(jù)類型不包括函數(shù)類型的基本知識(shí)點(diǎn),函數(shù)類型將在下一章函數(shù)二中詳細(xì)探討語(yǔ)句程序的執(zhí)行是由一條條語(yǔ)句組成的每一條語(yǔ)句是為完成特定任務(wù)而執(zhí)行的操作語(yǔ)句當(dāng)中可以

目錄 1. 語(yǔ)句 2. 變量 3. 小結(jié)

JavaScript基本語(yǔ)法(一)是JavaScript核心知識(shí)點(diǎn)(ECMAScript)的基本語(yǔ)法的第一部分,主要介紹了:JavaScript語(yǔ)句、表達(dá)式、變量和數(shù)據(jù)類型(不包括函數(shù)類型)的基本知識(shí)點(diǎn),函數(shù)類型將在下一章《JavaScript函數(shù)(二)》中詳細(xì)探討;

1.語(yǔ)句

JavaScript程序的執(zhí)行是由一條條語(yǔ)句組成的;

每一條語(yǔ)句是為完成特定任務(wù)而執(zhí)行的操作;

語(yǔ)句當(dāng)中可以包含處理數(shù)據(jù)的表達(dá)式,表達(dá)式指可得到返回值的計(jì)算式;

語(yǔ)句結(jié)束的標(biāo)志是;;

var a = 1;
//執(zhí)行賦值操作的語(yǔ)句,結(jié)束標(biāo)志的分號(hào)
var b = 1+1;
//執(zhí)行賦值操作的語(yǔ)句,賦值操作符右邊使用了表達(dá)式,返回值為2,結(jié)束標(biāo)志是分號(hào)
2. 變量

JavaScript是一門弱類型語(yǔ)言,通過(guò)使用關(guān)鍵字var聲明變量,在賦值時(shí)變量的數(shù)據(jù)類型將根據(jù)值的類型動(dòng)態(tài)轉(zhuǎn)變,從而體現(xiàn)弱類型的特征。

2.1 變量的聲明與賦值

聲明變量但為賦值
變量只聲明不賦值,則變量被賦一個(gè)特殊的值undefined

var a;
a//undefined

聲明變量并賦值
變量既聲明又賦值,則產(chǎn)生變量提升,即js引擎在解析階段會(huì)將所有的聲明變量提升到當(dāng)前作用域的頭部;

var a = 1;
//等價(jià)于
var a;
a  = 1;

一次性聲明多個(gè)變量

var a=1,
    b=2,
    c=3;
2.2 標(biāo)識(shí)符(identifier)

標(biāo)識(shí)符即標(biāo)識(shí)變量的名字,例如var a =1,標(biāo)識(shí)符為a,標(biāo)識(shí)符的命名規(guī)則如下:

第一個(gè)字符必須是任意Unicode字母、下劃線_或是美元符號(hào)$;

其他字符除了運(yùn)算符外,基本都可以使用;

變量名通常采用camelCase;

ECMA-262規(guī)定的關(guān)鍵字和保留字不能用作標(biāo)識(shí)符;

2.3 數(shù)據(jù)類型

JavaScript的數(shù)據(jù)類型主要包括數(shù)值、字符串、布爾值、對(duì)象、undefinednull,ES6新增Symbol;

其中,數(shù)值、字符串和布爾值可稱為基本數(shù)據(jù)類型,因?yàn)樗械臄?shù)據(jù)都是由這三種最基本的類型的值構(gòu)成;

對(duì)象可稱為復(fù)雜數(shù)據(jù)類型,這里的對(duì)象指的是廣義的對(duì)象,具體可細(xì)分為:

狹義的對(duì)象(object)

數(shù)組(array)

函數(shù)(function)
狹義的對(duì)象和數(shù)組本質(zhì)上是基本類型數(shù)據(jù)的集合,對(duì)象是一組無(wú)序鍵值對(duì)的集合,數(shù)組則是一組有序鍵值對(duì)(鍵名為從0開始的數(shù)字)的集合;

函數(shù)在JavaScript當(dāng)中既是處理數(shù)據(jù)的方法,更是一種數(shù)據(jù)類型,既可賦值也能傳參;

數(shù)值型
Number類型所有數(shù)字以64位浮點(diǎn)數(shù)形式存儲(chǔ)(相當(dāng)于雙精度數(shù)值);

各種進(jìn)制的數(shù)字的字面量表示

var a = 12//十進(jìn)制,12
var b = 0B1//二進(jìn)制,2
var c = 010 //八進(jìn)制,8
var d = 0x10 // 十六進(jìn)制,16
var e = 1.503e7 //科學(xué)計(jì)數(shù)法,15030000

【TIP】
在進(jìn)行進(jìn)制間的算術(shù)計(jì)算時(shí),最終將轉(zhuǎn)換為十進(jìn)制;
八進(jìn)制在嚴(yán)格模式下是無(wú)效的,會(huì)報(bào)錯(cuò);
數(shù)值的范圍
js能表示的數(shù)值的最大、最小范圍保存在Number.MAX_VALUENumber.MIN_VALUE當(dāng)中;
無(wú)窮大的數(shù)值存儲(chǔ)在Number.POSITIVE_INFINITY,無(wú)窮小的數(shù)值Number.NEGEITIVE_INFINITY,可用isFinite()函數(shù)檢測(cè)一個(gè)數(shù)值是否是無(wú)窮數(shù)值;

NaN
NaN是一個(gè)特殊的數(shù)值,表示非數(shù)字,主要出現(xiàn)在本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況下最終拋出一個(gè)NaN替代,主要出現(xiàn)場(chǎng)景如下:

//在進(jìn)行算術(shù)運(yùn)算時(shí),無(wú)法將該變量進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值;
var a =1,b= "h"
a-b
//不符合算是運(yùn)算法則
0/0


【TIP】
使用typeof NaN會(huì)拋出"number",證明NaN是一個(gè)特殊的數(shù)值;
NaN === NaN結(jié)果是false,證明,NaN不等于任何值;
可使用isNaN()判斷一個(gè)值是否為NaN
數(shù)值類型轉(zhuǎn)換
js提供三個(gè)方法將數(shù)據(jù)轉(zhuǎn)換為數(shù)值類型,包括Number()parseInt()parseFloat();
Number()可將所有類型數(shù)據(jù)轉(zhuǎn)換為數(shù)值,parseInt()parseFloat()能將字符串轉(zhuǎn)換為數(shù)值;

Number()除了值為undefined、字符串和對(duì)象無(wú)法轉(zhuǎn)換為數(shù)值的將轉(zhuǎn)換為NaN,其他都可轉(zhuǎn)換為數(shù)值;


此外,還可以使用算術(shù)操作符實(shí)現(xiàn)數(shù)值類型轉(zhuǎn)換,作用相同于Number():



在進(jìn)行字符串轉(zhuǎn)換為數(shù)值時(shí),通常使用parseInt(),該方法的處理原理是忽略字符串前的空格,直到找到第一個(gè)非空格字符,
如果第一個(gè)字符不是數(shù)字字符或負(fù)號(hào),則返回NaN,也就是說(shuō)parseInt("")和parseInt(null)與Number()的返回值不同;



可為parseInt()提供第二個(gè)參數(shù),指明要進(jìn)行轉(zhuǎn)換的數(shù)值的進(jìn)制



parseFloat()方法的處理原理基本和parseInt()類似,區(qū)別在遇到第一個(gè)小數(shù)點(diǎn)是有效的,第二小數(shù)點(diǎn)是無(wú)效的,并且直解析十進(jìn)制;

字符串型
字符串可以看做是放置在""""內(nèi)的零個(gè)或多個(gè)字符的數(shù)據(jù);

字符串的多種處理方式

//可用單引號(hào)也可用雙引號(hào);
var a = "H",
      b = "E";
//長(zhǎng)字符串的表示,多適用于HTML模板的表示
var c = "
            
"
//多個(gè)字符串的拼接,多適用于添加js代碼
var c = "hello"+"world"+document.getElementById("demo").innerHTML

轉(zhuǎn)移字符
string數(shù)據(jù)類型包含一些特殊的字符,用于表示非打印字符或是具有其他用途的字符;

	:制表符

:換行符

:回車
:退格
:反斜杠
":單引號(hào)
":雙引號(hào)
xnn:以十六進(jìn)制代碼nn(n為0~F)表示一個(gè)字符,如x41表示"A"
unnnn:以十六進(jìn)制代碼nnnn表示一個(gè)Unicode字符

字符串類型轉(zhuǎn)換
將其他類型數(shù)據(jù)轉(zhuǎn)換為字符串型有三種方法:

1.每個(gè)字符串均有toString()方法
var a = 11,b;
a.toString()//"11"
b.toString()//對(duì)于只聲明未賦值的變量或null,toString()將報(bào)錯(cuò)
2.String()函數(shù)對(duì)于任何類型的數(shù)據(jù)均有效
String(null)//"null"
String(undefined)//"undefined"
String(true)//"true"
3.空字符串""+其他類型數(shù)據(jù)
""+undefined//"undefined"
""+null//"null"

字符串與數(shù)組
字符串可以看作字符數(shù)組并且具有length屬性,和真實(shí)數(shù)組不同的是該數(shù)組元素只能讀不能寫,并且沒(méi)有數(shù)組相應(yīng)的方法;

布爾型
布爾型數(shù)據(jù)使用truefalse表示,代表真或假,js中所有類型的數(shù)據(jù)都可以表示成布爾類型的數(shù)據(jù);

布爾類型數(shù)據(jù)轉(zhuǎn)換
可使用轉(zhuǎn)型函數(shù)Boolean()可將數(shù)據(jù)轉(zhuǎn)換為布爾型數(shù)據(jù);

除了以下六個(gè)數(shù)據(jù)外,其他類型的布爾值均為true;

0
NaN
undefined
null
""
false


布爾型的應(yīng)用場(chǎng)景
布爾型數(shù)據(jù)往往結(jié)合流程控制語(yǔ)句用于執(zhí)行條件代碼塊

var message = "hello world"
if(message){
  alter(message)
}

對(duì)象類型
對(duì)象本質(zhì)上是由若干鍵值對(duì)構(gòu)成的無(wú)序數(shù)據(jù)的集合;

對(duì)象的創(chuàng)建
對(duì)象創(chuàng)建的方法包括以下3種:

1.字面量法
var a = {a:1,b:2};
2.Object構(gòu)造函數(shù)法
var b = new Object();
3.Object.create()法
var c = Object.create(null)

以上3種方法,字面量法最為簡(jiǎn)潔,Object方法比較正式,Object.create()常用于原型繼承場(chǎng)景;
對(duì)象的讀寫操作
對(duì)象的鍵或值可看做對(duì)象的屬性和方法,屬性代表對(duì)象的特性,方法代表對(duì)象的能力;

//寫操作
1.直接賦值
var a = {
    name:"teren",
    age:18,
    say:function(){
      console.log("hi")
    }
}
2.動(dòng)態(tài)創(chuàng)建
a.height = 185
a.["weight"] = "60kg"
a.ability = function(){
    return "talk"
}
//讀操作
a.name
a["age"]

查看所有屬性

Object.keys(a)


delete命令
delete命令用于刪除對(duì)象的屬性,但delete只能刪除對(duì)象本身的屬性,無(wú)法刪除繼承的屬性;由var聲明的全局變量默認(rèn)是無(wú)法刪除的;在Object.definedProperty方法的configurable定義為false的也不能刪除;



in運(yùn)算符
in運(yùn)算符可用來(lái)判斷對(duì)象的某個(gè)屬性是否存在,但in無(wú)法判斷這個(gè)屬性是屬于自身的還是繼承的,可用Object.hasOwnProperty()去判斷屬性;

數(shù)組
數(shù)組是按照一定次序(起始編號(hào)為0的數(shù)字序列)的一組數(shù)據(jù)集合;

數(shù)組的讀寫操作

數(shù)組的length屬性
length屬性是一個(gè)動(dòng)態(tài)值,根據(jù)數(shù)組元素成員個(gè)數(shù)而發(fā)生變化;

length屬性是可寫的,當(dāng)length屬性的長(zhǎng)度大于當(dāng)前長(zhǎng)度,則會(huì)向數(shù)組添加undefined值,若小于當(dāng)前長(zhǎng)度則會(huì)刪減值,可利用這一特性清空數(shù)組;

數(shù)組的遍歷
數(shù)組的遍歷最常用方法為for循環(huán),此外還有forEach、for in和Object.keys();

var arr = [1,2,3,4]
for(var i=0;i
var arr = [1,2,3,4]
arr.foo = true;
for(var key in arr){
   console.log(key)
}
//0
//1
//2
//3
//4
//foo
[注]for...in循環(huán)不僅遍歷數(shù)組的數(shù)字鍵,還會(huì)遍歷非數(shù)字鍵,所以一般數(shù)組的循環(huán)遍歷都采用for循環(huán);
var arr = [1,2,3,4]
arr.forEach(function(value,key){
    console.log(key+"."+value)
})
var arr = [1,2,3]
console.log(Object.keys(arr))


類數(shù)組對(duì)象
js中有些對(duì)象被稱作“類數(shù)組對(duì)象”,樣子看上去很像數(shù)組,實(shí)際是個(gè)對(duì)象,并且沒(méi)有數(shù)組的相關(guān)屬性和方法,例如函數(shù)的arguments對(duì)象、DOM元素集和字符串;


可以使用Array.prototype.slice.call(likeArrayObject)使得類數(shù)組對(duì)象變成真實(shí)的數(shù)組;

3.小結(jié)

通過(guò)整篇文章,我們可以了解到:

JavaScript的代碼是由一條條語(yǔ)句組成的,分號(hào)表示一條語(yǔ)句的結(jié)束;

語(yǔ)句當(dāng)中包含處理數(shù)據(jù)的表達(dá)式,表達(dá)式是可以得到返回值的計(jì)算式;

JavaScript是一門弱類型語(yǔ)言,使用var聲明變量是,變量的數(shù)據(jù)類型將根據(jù)具體值而動(dòng)態(tài)轉(zhuǎn)變;

JavaScript的數(shù)據(jù)類型主要包括數(shù)值、字符串、布爾型、對(duì)象(狹義的對(duì)象、數(shù)組和函數(shù))、undefined和null六種;

數(shù)值、字符串、布爾型又稱為基本數(shù)據(jù)類型,所有的數(shù)據(jù)都是由這三種最基本的數(shù)據(jù)類型構(gòu)成,對(duì)象、數(shù)組和函數(shù)可稱為復(fù)雜數(shù)據(jù)類型,由基本數(shù)據(jù)類型構(gòu)成;

數(shù)值類型的數(shù)據(jù)可通過(guò)不同的前綴表示不同進(jìn)制的數(shù)值,也可用科學(xué)計(jì)數(shù)法表示,存在最值和無(wú)窮值;NaN是一個(gè)特殊的數(shù)值,常出現(xiàn)在不符合算術(shù)運(yùn)算法則和無(wú)法將變量進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值的運(yùn)算場(chǎng)景;數(shù)值類型轉(zhuǎn)換的方法包括Number(),parseInt(),parseFloat()+

字符串可以看做是放在引號(hào)內(nèi)的零個(gè)或多個(gè)字符的數(shù)據(jù);部分特殊字符需要轉(zhuǎn)移符號(hào)反斜杠才能表示出來(lái);字符串可以看做是類數(shù)組數(shù)據(jù),可使用Array.prototype.slice.call(str)將其轉(zhuǎn)變?yōu)檎鏀?shù)組;字符串類型轉(zhuǎn)換方法包括String(),toString()""

布爾型的值只有truefalse,js中所有類型的數(shù)據(jù)都可以表示成布爾類型的數(shù)據(jù);布爾類型的數(shù)據(jù)轉(zhuǎn)換方法有Boolean()!!;除了false,null,undefined0,NaN""外,其他所有類型的數(shù)據(jù)的布爾值都是true;

對(duì)象本質(zhì)上是若干鍵值對(duì)構(gòu)成的無(wú)序數(shù)據(jù)的集合;對(duì)象的創(chuàng)建方法包括{},new ObjectObject.create(null);對(duì)象的讀寫操作可使用點(diǎn)操作方括號(hào)操作;遍歷對(duì)象的方法有for...inObject.keys();可使用delete命令刪除對(duì)象的自身屬性,繼承的屬性、var聲明的變量以及在Object.definedProperty({},"name",{value:"teren",configurable:false})也無(wú)法刪除;

數(shù)組是按照一定次序(起始編號(hào)為0的數(shù)字序列)的一組數(shù)據(jù)集合;數(shù)組的讀寫操作只能使用方括號(hào)操作;遍歷數(shù)組的方法包括forforEach,Obeject.keys;類數(shù)組對(duì)象包括HTMLCollection對(duì)象、函數(shù)的arguments對(duì)象以及字符串,可以使用Array.prototype.slice.call(likeArrayObject)使得類數(shù)組對(duì)象變成真實(shí)的數(shù)組;

參考資料

《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》

《JavaScript標(biāo)準(zhǔn)參考教程》——阮一峰

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86565.html

相關(guān)文章

  • JavaScript高級(jí)程序設(shè)計(jì)學(xué)習(xí)筆記三(基本語(yǔ)法)

    摘要:數(shù)據(jù)類型中有種簡(jiǎn)單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。在中非空字符串,非零數(shù)字,任意對(duì)象,都被認(rèn)為。而空字符串,和,,認(rèn)為是。用于表示整數(shù)和浮點(diǎn)數(shù)。標(biāo)識(shí)符由數(shù)字字母下劃線美元符組成,但首字母不能是數(shù)字。變量方法對(duì)象命名推薦駝峰法。 JavaScript語(yǔ)法 一.語(yǔ)法簡(jiǎn)介 因?yàn)镴avaScript語(yǔ)法和Java等語(yǔ)法非常類似。所以只是簡(jiǎn)單介紹一下。 大小寫 JavaScript是大小寫敏感的語(yǔ)...

    Mike617 評(píng)論0 收藏0
  • 2019年前端學(xué)習(xí)路線

    摘要:也就是我們常見的瀏覽器以及內(nèi)置瀏覽器,比如微信打開的大型移動(dòng)端網(wǎng)頁(yè)。這個(gè)以微信小程序?yàn)槔饕俏⑿艌F(tuán)隊(duì)基于前端基礎(chǔ)來(lái)做的封裝語(yǔ)法,主要的還是語(yǔ)法。學(xué)習(xí)路線放一下給大家。前端開發(fā)學(xué)習(xí)不是單一的,內(nèi)容比較多,同樣應(yīng)用的場(chǎng)景也非常多。 近兩年來(lái),前端開發(fā)工程師越來(lái)越火了,2019年已經(jīng)到來(lái)了,很多準(zhǔn)備入行前端開發(fā)工程師的小伙伴們,不知道準(zhǔn)備得怎么樣了呢?有的朋友在想方設(shè)法的學(xué)習(xí),爭(zhēng)取在年后...

    cfanr 評(píng)論0 收藏0
  • 2019年前端學(xué)習(xí)路線

    摘要:也就是我們常見的瀏覽器以及內(nèi)置瀏覽器,比如微信打開的大型移動(dòng)端網(wǎng)頁(yè)。這個(gè)以微信小程序?yàn)槔?,主要是微信團(tuán)隊(duì)基于前端基礎(chǔ)來(lái)做的封裝語(yǔ)法,主要的還是語(yǔ)法。學(xué)習(xí)路線放一下給大家。前端開發(fā)學(xué)習(xí)不是單一的,內(nèi)容比較多,同樣應(yīng)用的場(chǎng)景也非常多。 近兩年來(lái),前端開發(fā)工程師越來(lái)越火了,2019年已經(jīng)到來(lái)了,很多準(zhǔn)備入行前端開發(fā)工程師的小伙伴們,不知道準(zhǔn)備得怎么樣了呢?有的朋友在想方設(shè)法的學(xué)習(xí),爭(zhēng)取在年后...

    Miracle_lihb 評(píng)論0 收藏0
  • 2019年前端學(xué)習(xí)路線

    摘要:也就是我們常見的瀏覽器以及內(nèi)置瀏覽器,比如微信打開的大型移動(dòng)端網(wǎng)頁(yè)。這個(gè)以微信小程序?yàn)槔?,主要是微信團(tuán)隊(duì)基于前端基礎(chǔ)來(lái)做的封裝語(yǔ)法,主要的還是語(yǔ)法。學(xué)習(xí)路線放一下給大家。前端開發(fā)學(xué)習(xí)不是單一的,內(nèi)容比較多,同樣應(yīng)用的場(chǎng)景也非常多。 近兩年來(lái),前端開發(fā)工程師越來(lái)越火了,2019年已經(jīng)到來(lái)了,很多準(zhǔn)備入行前端開發(fā)工程師的小伙伴們,不知道準(zhǔn)備得怎么樣了呢?有的朋友在想方設(shè)法的學(xué)習(xí),爭(zhēng)取在年后...

    zhoutk 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<