JavaScript基本語法(一)

目錄

1. 語句

2. 變量

3. 小結


JavaScript基本語法(一)是JavaScript核心知識點(ECMAScript)的基本語法的第一部分,主要介紹了:JavaScript語句踢故、表達式吕漂、變量和數據類型(不包括函數類型)的基本知識點廷痘,函數類型將在下一章《JavaScript函數(二)》中詳細探討;


1.語句

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

  • 每一條語句是為完成特定任務而執(zhí)行的操作上渴;
  • 語句當中可以包含處理數據的表達式,表達式指可得到返回值的計算式喜颁;
  • 語句結束的標志是;稠氮;
var a = 1;
//執(zhí)行賦值操作的語句,結束標志的分號
var b = 1+1;
//執(zhí)行賦值操作的語句半开,賦值操作符右邊使用了表達式隔披,返回值為2,結束標志是分號

2. 變量

JavaScript是一門弱類型語言寂拆,通過使用關鍵字var聲明變量奢米,在賦值時變量的數據類型將根據值的類型動態(tài)轉變芥炭,從而體現弱類型的特征。

2.1 變量的聲明與賦值
  • 聲明變量但為賦值
    變量只聲明不賦值恃慧,則變量被賦一個特殊的值undefined园蝠;
var a;
a//undefined
  • 聲明變量并賦值
    變量既聲明又賦值痢士,則產生變量提升彪薛,即js引擎在解析階段會將所有的聲明變量提升到當前作用域的頭部;
var a = 1;
//等價于
var a;
a  = 1;
  • 一次性聲明多個變量
var a=1,
    b=2,
    c=3;
2.2 標識符(identifier)

標識符即標識變量的名字怠蹂,例如var a =1善延,標識符為a,標識符的命名規(guī)則如下:

  • 第一個字符必須是任意Unicode字母城侧、下劃線_或是美元符號$易遣;
  • 其他字符除了運算符外,基本都可以使用嫌佑;
  • 變量名通常采用camelCase豆茫;
  • ECMA-262規(guī)定的關鍵字和保留字不能用作標識符;
2.3 數據類型

JavaScript的數據類型主要包括數值屋摇、字符串揩魂、布爾值、對象炮温、undefinednull火脉,ES6新增Symbol

其中柒啤,數值倦挂、字符串和布爾值可稱為基本數據類型,因為所有的數據都是由這三種最基本的類型的值構成担巩;

對象可稱為復雜數據類型方援,這里的對象指的是廣義的對象,具體可細分為:

  • 狹義的對象(object)
  • 數組(array)

  • 函數(function)
    狹義的對象和數組本質上是基本類型數據的集合兵睛,對象是一組無序鍵值對的集合肯骇,數組則是一組有序鍵值對(鍵名為從0開始的數字)的集合;
    函數在JavaScript當中既是處理數據的方法祖很,更是一種數據類型,既可賦值也能傳參漾脂;

  • 數值型
    Number類型所有數字以64位浮點數形式存儲(相當于雙精度數值)假颇;
    各種進制的數字的字面量表示

var a = 12//十進制,12
var b = 0B1//二進制骨稿,2
var c = 010 //八進制笨鸡,8
var d = 0x10 // 十六進制姜钳,16
var e = 1.503e7 //科學計數法,15030000

【TIP】
在進行進制間的算術計算時形耗,最終將轉換為十進制哥桥;
八進制在嚴格模式下是無效的,會報錯激涤;
數值的范圍
js能表示的數值的最大拟糕、最小范圍保存在Number.MAX_VALUENumber.MIN_VALUE當中;
無窮大的數值存儲在Number.POSITIVE_INFINITY倦踢,無窮小的數值Number.NEGEITIVE_INFINITY送滞,可用isFinite()函數檢測一個數值是否是無窮數值;


NaN
NaN是一個特殊的數值辱挥,表示非數字犁嗅,主要出現在本來要返回數值的操作數未返回數值的情況下最終拋出一個NaN替代,主要出現場景如下:

//在進行算術運算時晤碘,無法將該變量進行數據類型轉換為數值褂微;
var a =1,b= "h"
a-b
//不符合算是運算法則
0/0


【TIP】
使用typeof NaN會拋出"number",證明NaN是一個特殊的數值园爷;
NaN === NaN結果是false蕊梧,證明,NaN不等于任何值腮介;
可使用isNaN()判斷一個值是否為NaN
數值類型轉換
js提供三個方法將數據轉換為數值類型肥矢,包括Number()parseInt()parseFloat();
Number()可將所有類型數據轉換為數值叠洗,parseInt()parseFloat()能將字符串轉換為數值甘改;

Number()除了值為undefined、字符串和對象無法轉換為數值的將轉換為NaN灭抑,其他都可轉換為數值;

此外十艾,還可以使用算術操作符實現數值類型轉換,作用相同于Number():


<pre>
在進行字符串轉換為數值時腾节,通常使用parseInt()忘嫉,該方法的處理原理是忽略字符串前的空格,直到找到第一個非空格字符案腺,
如果第一個字符不是數字字符或負號庆冕,則返回NaN,也就是說parseInt('')和parseInt(null)與Number()的返回值不同劈榨;
</pre>

<pre>
可為parseInt()提供第二個參數访递,指明要進行轉換的數值的進制
</pre>

<pre>
parseFloat()方法的處理原理基本和parseInt()類似,區(qū)別在遇到第一個小數點是有效的同辣,第二小數點是無效的拷姿,并且直解析十進制惭载;
</pre>


  • 字符串型
    字符串可以看做是放置在''""內的零個或多個字符的數據;
    字符串的多種處理方式
//可用單引號也可用雙引號响巢;
var a = "H",
      b = 'E';
//長字符串的表示描滔,多適用于HTML模板的表示
var c = "
            <template> \
                     <h1>JavaScript</h1> \
                    <p>Hello World!</p> \
            </template>
"
//多個字符串的拼接,多適用于添加js代碼
var c = "hello"+"world"+document.getElementById('demo').innerHTML

轉移字符
string數據類型包含一些特殊的字符踪古,用于表示非打印字符或是具有其他用途的字符含长;

\t:制表符
\n:換行符
\r:回車
\b:退格
\\:反斜杠
\':單引號
\":雙引號
\xnn:以十六進制代碼nn(n為0~F)表示一個字符,如\x41表示"A"
\unnnn:以十六進制代碼nnnn表示一個Unicode字符

字符串類型轉換
將其他類型數據轉換為字符串型有三種方法:

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

字符串與數組
字符串可以看作字符數組并且具有length屬性茎芋,和真實數組不同的是該數組元素只能讀不能寫,并且沒有數組相應的方法蜈出;


  • 布爾型
    布爾型數據使用truefalse表示田弥,代表真或假,js中所有類型的數據都可以表示成布爾類型的數據铡原;
    布爾類型數據轉換
    可使用轉型函數Boolean()可將數據轉換為布爾型數據偷厦;

    除了以下六個數據外,其他類型的布爾值均為true燕刻;
0
NaN
undefined
null
""
false

** 布爾型的應用場景**
布爾型數據往往結合流程控制語句用于執(zhí)行條件代碼塊

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

  • 對象類型
    對象本質上是由若干鍵值對構成的無序數據的集合只泼;
    對象的創(chuàng)建
    對象創(chuàng)建的方法包括以下3種:
1.字面量法
var a = {a:1,b:2};
2.Object構造函數法
var b = new Object();
3.Object.create()法
var c = Object.create(null)

以上3種方法,字面量法最為簡潔卵洗,Object方法比較正式请唱,Object.create()常用于原型繼承場景;
對象的讀寫操作
對象的鍵或值可看做對象的屬性和方法过蹂,屬性代表對象的特性十绑,方法代表對象的能力;

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

查看所有屬性

Object.keys(a)


delete命令
delete命令用于刪除對象的屬性酷勺,但delete只能刪除對象本身的屬性本橙,無法刪除繼承的屬性;由var聲明的全局變量默認是無法刪除的脆诉;在Object.definedProperty方法的configurable定義為false的也不能刪除甚亭;



in運算符
in運算符可用來判斷對象的某個屬性是否存在,但in無法判斷這個屬性是屬于自身的還是繼承的击胜,可用Object.hasOwnProperty()去判斷屬性亏狰;


  • 數組
    數組是按照一定次序(起始編號為0的數字序列)的一組數據集合;
    數組的讀寫操作

    數組的length屬性
    length屬性是一個動態(tài)值潜的,根據數組元素成員個數而發(fā)生變化;

    length屬性是可寫的骚揍,當length屬性的長度大于當前長度,則會向數組添加undefined值啰挪,若小于當前長度則會刪減值信不,可利用這一特性清空數組;

    數組的遍歷
    數組的遍歷最常用方法為for循環(huán)亡呵,此外還有forEach抽活、for in和Object.keys();
var arr = [1,2,3,4]
for(var i=0;i<arr.length;i++){
    console.log(arr[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)不僅遍歷數組的數字鍵,還會遍歷非數字鍵锰什,所以一般數組的循環(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))


類數組對象
js中有些對象被稱作“類數組對象”,樣子看上去很像數組汁胆,實際是個對象梭姓,并且沒有數組的相關屬性和方法,例如函數的arguments對象嫩码、DOM元素集和字符串誉尖;


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


3.小結

通過整篇文章铸题,我們可以了解到:

  • JavaScript的代碼是由一條條語句組成的铡恕,分號表示一條語句的結束;
  • 語句當中包含處理數據的表達式丢间,表達式是可以得到返回值的計算式探熔;
  • JavaScript是一門弱類型語言,使用var聲明變量是烘挫,變量的數據類型將根據具體值而動態(tài)轉變诀艰;
  • JavaScript的數據類型主要包括數值、字符串饮六、布爾型其垄、對象(狹義的對象、數組和函數)喜滨、undefined和null六種捉捅;
  • 數值、字符串虽风、布爾型又稱為基本數據類型棒口,所有的數據都是由這三種最基本的數據類型構成,對象辜膝、數組和函數可稱為復雜數據類型无牵,由基本數據類型構成;
  • 數值類型的數據可通過不同的前綴表示不同進制的數值厂抖,也可用科學計數法表示茎毁,存在最值和無窮值;NaN是一個特殊的數值,常出現在不符合算術運算法則和無法將變量進行數據類型轉換為數值的運算場景七蜘;數值類型轉換的方法包括Number(),parseInt(),parseFloat()+谭溉;
  • 字符串可以看做是放在引號內的零個或多個字符的數據;部分特殊字符需要轉移符號反斜杠才能表示出來橡卤;字符串可以看做是類數組數據扮念,可使用Array.prototype.slice.call(str)將其轉變?yōu)檎鏀到M;字符串類型轉換方法包括String()碧库,toString()""柜与;
  • 布爾型的值只有truefalse,js中所有類型的數據都可以表示成布爾類型的數據嵌灰;布爾類型的數據轉換方法有Boolean()!!弄匕;除了falsenull沽瞭,undefined迁匠,0NaN秕脓,""外柒瓣,其他所有類型的數據的布爾值都是true
  • 對象本質上是若干鍵值對構成的無序數據的集合吠架;對象的創(chuàng)建方法包括{}芙贫,new ObjectObject.create(null);對象的讀寫操作可使用點操作方括號操作傍药;遍歷對象的方法有for...inObject.keys()磺平;可使用delete命令刪除對象的自身屬性,繼承的屬性拐辽、var聲明的變量以及在Object.definedProperty({},"name",{value:"teren",configurable:false})也無法刪除拣挪;
  • 數組是按照一定次序(起始編號為0的數字序列)的一組數據集合;數組的讀寫操作只能使用方括號操作俱诸;遍歷數組的方法包括for菠劝,forEachObeject.keys睁搭;類數組對象包括HTMLCollection對象赶诊、函數的arguments對象以及字符串,可以使用Array.prototype.slice.call(likeArrayObject)使得類數組對象變成真實的數組园骆;

參考資料

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末舔痪,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子锌唾,更是在濱河造成了極大的恐慌锄码,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異滋捶,居然都是意外死亡痛悯,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門炬太,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灸蟆,“玉大人驯耻,你說我怎么就攤上這事亲族。” “怎么了可缚?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵霎迫,是天一觀的道長。 經常有香客問我帘靡,道長知给,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任描姚,我火速辦了婚禮涩赢,結果婚禮上,老公的妹妹穿的比我還像新娘轩勘。我一直安慰自己筒扒,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布绊寻。 她就那樣靜靜地躺著花墩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澄步。 梳的紋絲不亂的頭發(fā)上冰蘑,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音村缸,去河邊找鬼祠肥。 笑死,一個胖子當著我的面吹牛梯皿,可吹牛的內容都是我干的仇箱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼索烹,長吁一口氣:“原來是場噩夢啊……” “哼工碾!你這毒婦竟也來了?” 一聲冷哼從身側響起百姓,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渊额,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體旬迹,經...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡火惊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了奔垦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屹耐。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椿猎,靈堂內的尸體忽然破棺而出惶岭,到底是詐尸還是另有隱情,我是刑警寧澤犯眠,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布按灶,位于F島的核電站,受9級特大地震影響筐咧,放射性物質發(fā)生泄漏鸯旁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一量蕊、第九天 我趴在偏房一處隱蔽的房頂上張望铺罢。 院中可真熱鬧,春花似錦残炮、人聲如沸韭赘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辞居。三九已至,卻和暖如春蛋勺,著一層夾襖步出監(jiān)牢的瞬間瓦灶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工抱完, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贼陶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓巧娱,卻偏偏與公主長得像碉怔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子禁添,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創(chuàng)建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,238評論 0 4
  • 第三章 基本概念 3.1 語法 ECMAScript標識符一般采用駝峰大小寫格式撮胧,也就是第一個字母小寫,剩下的每個...
    小雄子閱讀 549評論 0 1
  • 喜歡一個人的獨處時光老翘,喜歡一個人背著行囊遠走芹啥,喜歡一路走走停停锻离,看看隨行的風景。 在空無一人的他鄉(xiāng)墓怀,感受到...
    496d090216f4閱讀 346評論 0 0
  • 田恬第一次到錦盛大酒店汽纠,十多米高的中廳裝修的豪華而又富貴。大廳后背整面墻上畫了一幅巨大的山水國畫傀履,畫風清奇虱朵,氣勢磅...
    拈花吟閱讀 181評論 0 2
  • “熱鬧是他們的,而我什么也沒有” 看到這句話時钓账,我瞬間淚流滿面碴犬。直到現在為止,我都覺著我自己是孑然一身的官扣。把...
    hey王木木閱讀 288評論 0 2