一.直接量(字面量)
字面量:英語(yǔ)叫做literals痘括,也做直接量』舆耄看見(jiàn)什么俊扳,它就是什么。
1. 數(shù)字的字面量
數(shù)字的字面量猛遍,就是這個(gè)數(shù)字自己
1.1 整數(shù)
三種進(jìn)制
整數(shù)可以被表示成十進(jìn)制(基數(shù)為10)馋记、十六進(jìn)制(基數(shù)為16)以及八進(jìn)制(基數(shù)為8)
10進(jìn)制:十進(jìn)制整數(shù)字組成的數(shù)字序列,
8進(jìn)制:帶前導(dǎo)0、0O懊烤、0o 的整數(shù)字面值表明它是八進(jìn)制梯醒。八進(jìn)制整數(shù)只能包括數(shù)字0-7。
16進(jìn)制:如帶前導(dǎo)0x,0X開(kāi)頭的就是十六進(jìn)制腌紧。十六進(jìn)制整數(shù)可以包含(0-9)和字母 a-f 或 A-F
// 八進(jìn)制 最終顯示是以十進(jìn)制方式顯示
alert(015) // 1*8 + 5 = 13
alert(017) // 1*8 + 7 *1 =15
alert(0o21) // 2*8 + 1 *1 =17
alert(0O21); // 2*8 + 1 *1 =17
八進(jìn)制0-7這八個(gè)數(shù)字,如果小時(shí)不合法,js還自動(dòng)給你轉(zhuǎn)成10進(jìn)制,轉(zhuǎn)不了就報(bào)錯(cuò)
console.log(088); //88
// 按理說(shuō)以0開(kāi)頭是八進(jìn)制,但是后面數(shù)字寫(xiě)錯(cuò)了,所以以十進(jìn)制方式限制
如果以0o或0O開(kāi)頭的八進(jìn)制將報(bào)錯(cuò)
console.log(0o88); // 報(bào)語(yǔ)法錯(cuò)誤
console.log(0O88); // 報(bào)語(yǔ)法錯(cuò)誤
1.2 浮點(diǎn)數(shù)(小數(shù)或指數(shù))
小數(shù)的字面量也很簡(jiǎn)單茸习,就是數(shù)學(xué)上的點(diǎn)。計(jì)算機(jī)世界中壁肋,小數(shù)稱(chēng)為“浮點(diǎn)數(shù)”号胚。
浮點(diǎn)數(shù)字面值可以有以下的組成部分:
一個(gè)十進(jìn)制整數(shù),它可以帶符號(hào)(即前面的“+”或“ - ”號(hào))浸遗,如果整數(shù)部分是0可以不寫(xiě)
一個(gè)小數(shù)點(diǎn)
一個(gè)小數(shù)部分(由一串十進(jìn)制數(shù)表示)猫胁,
一個(gè)指數(shù)部分
console.log(3.14159269);
console.log(5e4); //50000
console.log(5e-4) //0.0005
注意:
只有十進(jìn)制有小數(shù)的字面量,八進(jìn)制跛锌、十六進(jìn)制沒(méi)有小數(shù)的字面量弃秆。所以小數(shù)沒(méi)有進(jìn)制之分
1.3 特殊字面量
Infinity 無(wú)窮大
Infinity 用于存放表示正無(wú)窮大的數(shù)值。
-Infinity 用于存放表示負(fù)無(wú)窮大的數(shù)值髓帽。
console.log(3e31415926); // Infinity
NaN
英語(yǔ)全名叫做not a number菠赚,不是一個(gè)數(shù)。
console.log(0/0); // NaN
1.4 總結(jié)一下郑藏,
數(shù)字字面量有整數(shù)字面量(十進(jìn)制衡查、16進(jìn)制、八進(jìn)制)必盖,
浮點(diǎn)數(shù)字面量(要記住e)拌牲,
特殊字面量:Infinity,NaN
2. 字符串的字面量
字符串是一個(gè)術(shù)語(yǔ)筑悴,說(shuō)白了就是我們?nèi)苏f(shuō)的話们拙。
2.1 字符串字面量的書(shū)寫(xiě)方式
字符串的字面量有限定符,就是必須用雙引號(hào)阁吝、單引號(hào)包裹起來(lái)。字符串被限定在同種引號(hào)之間械拍;也就是說(shuō),必須是成對(duì)單引號(hào)或成對(duì)雙引號(hào)突勇。
console.log("今天你好帥哦");
2.2 特殊字符
在字符串中可以使用一些特殊字符,他們有特定的含義
\n New line 換行符
\t Tab tab縮進(jìn)
但是可以使用字符串中可以使用轉(zhuǎn)義字符装盯,
' 單引號(hào)
\” 雙引號(hào)
\ 反斜杠
二.變量
變量(Variables),和高中數(shù)學(xué)中的x甲馋、y埂奈、z很像,它們此時(shí)不是字母定躏,而是蘊(yùn)含值的符號(hào)账磺。
什么是變量呢?
就是值可以變化的符號(hào),能夠存儲(chǔ)JS不同數(shù)據(jù)類(lèi)型的值
1. 變量聲明
使用關(guān)鍵詞var
var a; // 聲明一個(gè)變量a
所謂關(guān)鍵字,就是有特殊功能的小詞語(yǔ)痊远。關(guān)鍵字后面一定要有空格隔開(kāi).
2. 變量命名規(guī)則
變量的名字就是標(biāo)識(shí)符(identifiers)垮抗,任何標(biāo)識(shí)符的命名都需要遵守一定的規(guī)則:
JS中標(biāo)識(shí)符的定義規(guī)則,可先理解為變量的規(guī)則,以后我們還會(huì)接觸到其他標(biāo)識(shí)符
由字母、下劃線(_)碧聪、美元($)符號(hào)冒版、數(shù)字(0-9)組成
-
但不能以數(shù)字開(kāi)頭
也就是說(shuō),一個(gè)標(biāo)識(shí)符必須由字母逞姿、下劃線辞嗡、美元符號(hào)開(kāi)頭,后續(xù)可以有字母滞造、下劃線续室、美元符號(hào)、數(shù)字
-
嚴(yán)格區(qū)分大小寫(xiě)
所以A和a不是同一個(gè)變量
不要使用中文變量名
-
不能使用關(guān)鍵字和保留字
關(guān)鍵字=>js已經(jīng)賦予特殊功能的字 保留字=>js預(yù)訂可能未來(lái)要使用的字
關(guān)鍵字:
JS語(yǔ)法中有特殊意義的詞
break谒养、else猎贴、new、var蝴光、 case她渴、 finally 、 return蔑祟、 void 趁耗、 catch 、for 疆虚、switch 苛败、 while 、 continue径簿、 function 罢屈、this 、 with 篇亭、default 缠捌、 if 、 throw 译蒂、 delete 曼月、 in 谊却、 try 、do 哑芹、 instranceof炎辨、 typeof
保留字:
JS語(yǔ)法中現(xiàn)在不存在,但是以后會(huì)成為關(guān)鍵字的單詞(替補(bǔ)關(guān)鍵詞)
abstract 、 enum 聪姿、int 碴萧、 short 、 boolean 末购、export 破喻、interface、 static招盲、 byte 低缩、extends 、 long 曹货、 super 咆繁、 char 、 final 顶籽、native 玩般、synchronized 、 class 礼饱、float 坏为、 package 、throws 镊绪、 const 匀伏、goto 、private 蝴韭、transient 够颠、 debugger 、 implements 榄鉴、protected 履磨、 volatile 、 double 庆尘、import 剃诅、public
3. 變量的賦值
等號(hào)表示賦值,會(huì)將等號(hào)右邊的值驶忌,賦給左邊的變量矛辕。。
var a; //定義
a = 200; //賦初值
console.log(a);
運(yùn)行結(jié)果:200
3.1 可以將變量定義和賦值寫(xiě)在一起
var a = 200;
3.2 定位變量未賦值
用 var 聲明的未賦初值的變量,值會(huì)被設(shè)定為undefined
var a ;
console.log(a);
注意:
變量只需要var一次如筛,今后更改變量的值堡牡,無(wú)需重復(fù)var,如果多次定位也 不會(huì)報(bào)錯(cuò)
4. 變量聲明的提升
JavaScript 變量的另一特別之處是抒抬,你可以引用稍后聲明的變量杨刨,而不會(huì)引發(fā)異常。這一概念稱(chēng)為變量聲明提升.JavaScript 變量感覺(jué)上是被“舉起”或提升到了所有函數(shù)和語(yǔ)句之前擦剑。然而提升后的變量將返回 undefined 值妖胀,所以即使在使用或引用某個(gè)變量之后存在聲明和初始化操作,仍將得到 undefined 值惠勒。
5. 不寫(xiě)var的情況呢
我們可以直接使用一個(gè)變量赚抡,直接給它賦值,不寫(xiě)var纠屋。系統(tǒng)不會(huì)報(bào)錯(cuò)涂臣,但是這樣做,以后你會(huì)發(fā)現(xiàn)有后遺癥:這個(gè)變量不是局部變量售担,而是一個(gè)全局變量赁遗。
a = 33;
console.log(a);
7. 同時(shí)定義多個(gè)變量
定義多個(gè)變量時(shí),中間用逗號(hào)隔開(kāi)
var a = 7 , b = 9 , c = 10;
8. 區(qū)分變量還是直接量
變量的時(shí)候,不能加引號(hào)族铆。如果變量加上引號(hào)岩四,就變成字符串的直接量了。
var a = 200;
console.log("a"); //a
引號(hào)是“字符串”的定界符哥攘,所以在雙引號(hào)里面的a已經(jīng)失去了變量的意思剖煌,就是一個(gè)字符串a(chǎn)。
三. 數(shù)據(jù)類(lèi)型
JavaScript中的值逝淹,無(wú)論是字面量還是變量耕姊,都有明確的類(lèi)型。
1. 概述
1.1 基本類(lèi)型5種
number 數(shù)字類(lèi)型
string 字符串類(lèi)型
boolean 布爾類(lèi)型栅葡,僅有兩個(gè)值true 和 false茉兰,講if語(yǔ)句時(shí)我們細(xì)說(shuō)
undefined undefined類(lèi)型,這中類(lèi)型值只有一個(gè),就是undefined
null null類(lèi)型妥畏,這種類(lèi)型的值也就只有一個(gè)null,之后在說(shuō)
1.2 引用類(lèi)型
{ } 普通的對(duì)象
[ ] 數(shù)組對(duì)象
function 函數(shù)對(duì)象
學(xué)到了在講
2. 數(shù)據(jù)類(lèi)型的檢測(cè)
使用typeof關(guān)鍵字檢查數(shù)據(jù)類(lèi)型,通常用來(lái)檢測(cè)變量的類(lèi)型,以為直接量的類(lèi)型一眼就看的出來(lái)
檢測(cè)出的數(shù)據(jù)類(lèi)型是以字符串形式呈現(xiàn)的
console.log(typeof 123); //number
console.log(typeof "haha"); //string
四. 運(yùn)算符:加號(hào) +
我們先講一個(gè)運(yùn)算符加號(hào)邦邦,因?yàn)樗容^特殊,我們先講
加法運(yùn)算符(+)在設(shè)計(jì)數(shù)字和字符串運(yùn)算的表達(dá)式中醉蚁,JavaScript 會(huì)把數(shù)字值轉(zhuǎn)換為字符串燃辖。
在其它類(lèi)型數(shù)據(jù)運(yùn)算時(shí),JavaScript語(yǔ)言不會(huì)把數(shù)字變?yōu)樽址?/p>
五. 數(shù)據(jù)類(lèi)型轉(zhuǎn)換
1. 轉(zhuǎn) number
有一些方法可以將內(nèi)存中表示其他數(shù)據(jù)類(lèi)型轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字
-
Number()
- string "12px" => NaN “” => 0
- boolean true => 1 false => 0
- null null => 0
- undefined undefined => NaN
Number('wuwei')
-
parseInt()
parseInt 僅能夠返回整數(shù)网棍,所以使用它會(huì)丟失小數(shù)部分
parseInt("250px") //250
另外黔龟,調(diào)用 parseInt 時(shí)最好總是帶上進(jìn)制(radix) 參數(shù),這個(gè)參數(shù)用于指定使用哪一種數(shù)制。
parseInt(17,8); // 15
-
parseFloat()
parseFloat
就是將字符串轉(zhuǎn)為浮點(diǎn)數(shù)盡可能的將一個(gè)字符串轉(zhuǎn)為浮點(diǎn)數(shù)
console.log(parseFloat(123.456.888)); //123.456
也就是說(shuō)氏身,數(shù)字類(lèi)型都是number巍棱,不分整數(shù)和浮點(diǎn)數(shù),但是轉(zhuǎn)換的+時(shí)候分蛋欣。
-
**正負(fù)運(yùn)算符 **
console.log(+'88');
正負(fù)號(hào)轉(zhuǎn)換為數(shù)字是內(nèi)部調(diào)用為了Number方法
2. 轉(zhuǎn) string
-
+
號(hào)運(yùn)算符將一個(gè)數(shù)字航徙,與一個(gè)空字符串進(jìn)行連字符運(yùn)算,那么就是自動(dòng)轉(zhuǎn)為字符串了陷虎。
var a = 123; var b = a + ""; console.log(b); console.log(typeof b);
3. 轉(zhuǎn) boolean
-
Boolean() 方法
只有六種情況Boolean(被轉(zhuǎn)換的數(shù)據(jù))的結(jié)果是false,其余全是true
- 0 數(shù)字0
- NaN 數(shù)字NaN
- "" 空字符串
- false 布爾值false
- undefined undefined類(lèi)型
- null null類(lèi)型
用的不多了解幾個(gè),大多用隱式轉(zhuǎn)換,這個(gè)后面會(huì)將,先了解
今天遇見(jiàn)的所有API:
alert("您好");
prompt("請(qǐng)輸入數(shù)字","默認(rèn)值");
console.log("您好");
Number(“33”)
parseInt("250",8);
parseFloat("250.666");
Boolean("")