第一節(jié):JavaScript中字面量與變量

一.直接量(字面量)

在學(xué)習(xí)JavaScript變量之前,先認(rèn)識一下直接量(字面量)

字面量:英語叫做literals扼鞋,也做直接量蟹演。看見什么英妓,它就是什么挽放。

咱們先學(xué)習(xí)數(shù)字和字符串的字面量。剩余的字面量類型鞋拟,之后在講

1. 數(shù)字的字面量

數(shù)字的字面量骂维,就是這個數(shù)字自己,并不需要任何的符號來界定這個數(shù)字贺纲。

例如:

數(shù)字8 就是數(shù)字8 不比表示其他值,這就是字面量

但是也需要注意, 數(shù)字也有進(jìn)制問題,

1.1 整數(shù)

JavaScript中航闺,數(shù)字的整數(shù)字面量可以有三種進(jìn)制:

10進(jìn)制:普通的數(shù)字就是十進(jìn)制

8進(jìn)制:如果以0、0o猴誊、0O開頭數(shù)字字面量是八進(jìn)制潦刃,八進(jìn)制只包括數(shù)字0~7

16進(jìn)制:如果以0x,0X開頭數(shù)字字面量是十六進(jìn)制。十六進(jìn)制整數(shù)可以包含(0-9)和字母 a-f 或 A-F

1.1.1 八進(jìn)制

<scripttype="text/javascript">

//以0開頭懈叹,是八進(jìn)制乖杠;顯示的時(shí)候會以十進(jìn)制顯示console.log(017);//15 //1*8+7=15? console.log(0o17);//15console.log(0O17);//15console.log(044);//4*8+4=36 ,顯示36console.log(010);//8console.log(0o36);//30console.log(0O36);//30</script>

注意澄成,八進(jìn)制只能出現(xiàn)0~7這8中數(shù)字胧洒,如果表示不合法畏吓,那么JS將自動的認(rèn)為你輸入錯了,從而用十進(jìn)制進(jìn)行顯示:

console.log(080);//80 //以0開頭卫漫,按理說是八進(jìn)制菲饼,但是后面的數(shù)字錯了,所以以十進(jìn)制顯示

但是以0o開頭列赎、0O開頭的數(shù)字宏悦,如果后面寫錯了,控制臺報(bào)錯包吝!

// 如果是0o開頭的饼煞,后面的數(shù)字錯了,對不起诗越,不轉(zhuǎn)為10進(jìn)制了砖瞧,控制臺報(bào)錯!console.log(0o88);//報(bào)錯console.log(0O88);//報(bào)錯// 控制臺報(bào)錯//Uncaught SyntaxError: Invalid or unexpected token//語法錯誤

1.1.2 十六進(jìn)制

// 十六進(jìn)制:console.log(0xff);//255console.log(0x2b);//43

如果后面有錯誤的寫法掺喻,那么控制臺報(bào)錯:

console.log(0x2g);// 控制臺報(bào)錯//Uncaught SyntaxError: Invalid or unexpected token//語法錯誤

總結(jié):認(rèn)識下面字面量為什么進(jìn)制的數(shù)字字面量

console.log(16);// 十進(jìn)制console.log(020);// 八進(jìn)制console.log(0o20);// 八進(jìn)制console.log(0O20);// 八進(jìn)制console.log(0x10);// 十六進(jìn)制console.log(-0xf);// 十六進(jìn)制

1.2 浮點(diǎn)數(shù)(小數(shù)或指數(shù))

小數(shù)的字面量也很簡單芭届,就是數(shù)學(xué)上的點(diǎn)。計(jì)算機(jī)世界中感耙,小數(shù)稱為“浮點(diǎn)數(shù)”。

指數(shù)就是:允許使用e來表示乘以10的幾次冪:

console.log(3.1415);//3.1415console.log(.35);//.35 如果整數(shù)位數(shù)是0持隧,可以不寫console.log(5e5);//500000console.log(5.2e5);//520000console.log(1e-4);//0.0001

注意:

只有十進(jìn)制有小數(shù)的字面量即硼,八進(jìn)制、十六進(jìn)制沒有小數(shù)的字面量屡拨。所以小數(shù)沒有進(jìn)制之分

那么有個問題,JavaScript里的數(shù)字到底最大能顯示多大的數(shù)字

// 非常大的數(shù)字只酥,無窮大console.log(3e45645645645646);// 非常小的數(shù)字,負(fù)無窮大console.log(-3e45645645645646);

1.3 特殊字面量

1.3.1Infinity 無窮大

試圖輸出一個非常大的數(shù)字:

// 非常大的數(shù)字呀狼,無窮大console.log(3e45645645645646);//Infinity

至于多大的數(shù)字能生成無窮大裂允,不同瀏覽器不一樣,不要管哥艇。

可以是負(fù)的無窮大:

console.log(-5e31415926);//-Infinity

我們可以直接在控制臺輸出無窮大绝编,注意大小寫:

console.log(Infinity);

1.3.2NaN

英語全名叫做not a number,不是一個數(shù)貌踏。

比較有意思的是十饥,這個“不是一個數(shù)”他居然是一個數(shù)字字面量。

// 輸出NaNconsole.log(0/0);// NaN

1.4 總結(jié)一下祖乳,

數(shù)字字面量有整數(shù)字面量(十進(jìn)制逗堵、16進(jìn)制、八進(jìn)制)眷昆,

浮點(diǎn)數(shù)字面量(要記住e)蜒秤,

特殊字面量:Infinity汁咏,NaN

2.? 字符串的字面量

字符串是一個術(shù)語,說白了就是我們?nèi)苏f的話作媚。

2.1 字符串字面量的書寫方式

字符串的字面量有限定符攘滩,就是必須用雙引號、單引號包裹起來掂骏。字符串被限定在同種引號之間轰驳;也就是說,必須是成對單引號或成對雙引號。

console.log("今天你好帥哦");//? 字符串用雙引號包裹弟灼,或者單引號console.log("今天天氣很好");console.log('今天天氣很好');

不加引號是錯誤的

//? 不能不加引號级解,這是錯誤的:console.log(今天天氣很好);

注意引號必須是同種引號,混用錯誤

console.log('嘻嘻");

如果一個數(shù)字,用引號引起來田绑,那么就是字符串了:

console.log("兄弟勤哗,你中午吃了幾碗飯?");console.log("3");

正常情況下掩驱,引號內(nèi)部可以有不同種的引號芒划,比如雙引號里面可以有單引號:

// 雙引號中用單引號console.log("你笑起來像'花兒'一樣好看");// 單引號中用雙引號console.log('你笑起來像"花兒"一樣好看');

2.2 特殊字符

在字符串中可以使用一些特殊字符,他們有特定的含義

\n? ? New line? ? 換行符

\t? ? Tab? ? ? ? ? ? tab縮進(jìn)

//轉(zhuǎn)義字符alert("你們\n啊\n怎么可以\n那么可愛呢");

這里\反斜杠就是我們通常所說的轉(zhuǎn)義符號, 可以將沒有意義的字面n轉(zhuǎn)為有意義的換行,

同樣換行符也可以將有意義的符號轉(zhuǎn)為沒有意義的不同字符

在使用字符串中可以使用轉(zhuǎn)義字符,

'? ? 單引號

\”? ? 雙引號

\? ? 反斜杠

// 使用反斜杠\轉(zhuǎn)義字符 console.log("你笑起來像\"花兒\"一樣好看");

二.變量

變量(Variables)欧穴,和高中數(shù)學(xué)中的x民逼、y、z很像涮帘,它們此時(shí)不是字母拼苍,而是代指一些值的符號。

它和直接量不同调缨,直接量5疮鲫,就是數(shù)字5;直接量”你好”就是字符串“你好”弦叶。

現(xiàn)在這個變量不一樣了俊犯,你看見一個a,實(shí)際上它不是字母a伤哺,而是里面蘊(yùn)含的不同的值燕侠。

1. 整體了解

<scripttype="text/javascript">//定義一個變量vara;//賦值a=200;//輸出變量aconsole.log(a);// 這個語句將會引發(fā)錯誤,因?yàn)閎沒有進(jìn)行定義console.log(b);</script>

我們使用var關(guān)鍵字來定義變量默责,所謂的關(guān)鍵字就是一些有特殊功能的單詞贬循,關(guān)鍵字后面要有空格。

var就是英語variables變量的縮寫桃序,表示定義一個變量杖虾。一旦你

vara;

你的電腦內(nèi)存中,就會開辟一個空間媒熊,命名為a, 等待你給這個變量空間存放一定的值,

一旦變量聲明后,就可以給變量賦值奇适,

JS中給變量賦值用等號坟比,等號右邊的值賦給左邊。

a=200;

現(xiàn)在a變量的值就是200嚷往。所以我們輸出

console.log(a);

控制臺就會輸出a變量的值葛账,就是200

2. 變量必須先聲明,在使用

使用一個變量,必須先進(jìn)行一個var皮仁,才能使用籍琳。var這個過程可以叫做聲明declaration,也可以叫做定義definition贷祈。叫聲明一個變量,或定義一個變量.

如果變量未聲明就直接使用,會怎么樣呢,看下

console.log(n);//這個c沒有被var過,所有會報(bào)錯

因?yàn)閚沒有被聲明趋急,所以n現(xiàn)在不是一個變量,系統(tǒng)不認(rèn)識這個n的势誊。就會拋出引用錯誤呜达。

console.log(n);//Uncaught ReferenceError: n is not defined//ReferenceError? ? 引用錯誤//n is not defined? n未定義

3. 變量命名規(guī)則

變量的名字就是標(biāo)識符(identifiers),任何標(biāo)識符的命名都需要遵守一定的規(guī)則:

JS中標(biāo)識符的定義規(guī)則,可先理解為變量的規(guī)則,以后我們還會接觸到其他標(biāo)識符

由字母粟耻、下劃線(_)查近、美元($)符號、數(shù)字(0-9)組成

不能以數(shù)字開頭

也就是說挤忙,一個標(biāo)識符必須由字母霜威、下劃線、美元符號開頭册烈,后續(xù)可以有字母侥祭、下劃線、美元符號茄厘、數(shù)字

嚴(yán)格區(qū)分大小寫

所以A和a不是同一個變量

不要使用中文變量名

不能使用關(guān)鍵字和保留字

那么什么是關(guān)鍵字 和保留字呢

關(guān)鍵字=>js已經(jīng)賦予特殊功能的單詞

保留字=>js預(yù)訂可能未來要使用的字

關(guān)鍵字:

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

保留字:

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

示例:

// // 以下都是合法的變量名vara;varA;varb333;var_abc;var$;var$o0_0o$;var________;var_;// 以下都是非法的變量名var123a;var12_a;varabc@163;varabc¥;varvar;varclass;

注意: 關(guān)鍵字,保留字不用可以的去記憶, 在未來學(xué)習(xí)的過程中會接觸到一大部分關(guān)鍵字保留字,

4. 變量的賦值

變量的賦值用等號布隔,等號就是賦值符號,在JS中等號沒有其他的含義稼虎,等號就表示賦值衅檀。

vara;//定義a=200;//賦初值console.log(a);

運(yùn)行結(jié)果:200

4.1? 可以將定義和賦初值寫在一起:

vara=200;console.log(a);//200vara=100;varb=200;a=b;//在改變a變量的值,a的值變?yōu)?00霎俩。b的值不變哀军。console.log(a);console.log(b);`

4.2 變量只要var一次就可以了

變量只需要var一次,后面改變變量的值的時(shí)候打却,就不需要var了杉适,可以直接改變它的值。

vara=200;a=50;//不需要寫varconsole.log(a);//50

4.3 var后沒有復(fù)制的變量

如果一個變量柳击,僅僅被var了猿推,但是沒有被賦初值呢,此時(shí)這個變量的值就是undefined;

// 定義不賦初值捌肴,值是undefinedvarm;console.log(m);//輸出undefined

實(shí)際上我們使用var后蹬叭,就已經(jīng)定義了這個m,只不過這就是瀏覽器的一個規(guī)矩状知,如果這個變量沒有被賦初值秽五,那么這個變量就視為沒有“定義完成”。值就是undefined饥悴。就是空值的意思

5. 不寫var的情況呢

// 不寫var的時(shí)候?qū)嶋H上現(xiàn)在看不出來區(qū)別坦喘,今后就知道是一個全局變量abc=123;console.log(abc);//123

定義abc的時(shí)候沒有寫var,程序沒有報(bào)錯西设,說明這個abc變量真的已經(jīng)被定義成功了“晗常現(xiàn)在你看不出來var和不var的區(qū)別,感覺都是成功的贷揽,但是日后你就會知道,不寫其實(shí)var定義了一個全局變量坯沪,作用域是不能控制的。

知道就行,自己千萬不要這么干

6. 同時(shí)定義多個變量

定義多個變量時(shí),中間用逗號隔開

vara=7,b=9,c=10;console.log(a);console.log(b);console.log(c);

7. 變量聲明的提升

這是js特有的一個特點(diǎn)擒滑,其他語言都沒有這個特點(diǎn)。

我們現(xiàn)在先去改變變量的值叉弦,然后定義變量丐一,

由于JS有一個機(jī)制,叫做變量聲明的提升淹冰,所以現(xiàn)在程序在執(zhí)行前會已經(jīng)看見這個程序中有一行定義變量库车,所以就會提升到程序開頭去運(yùn)行。

a=200;vara;//這行定義變量會自動提升到所有語句之前console.log(a);//200

記住樱拴,js只能提升變量的聲明柠衍,而不能提升變量的賦初值

//提升只能提升變量聲明洋满,而不能提升賦初值。輸出undefinedconsole.log(a);vara=200;

等價(jià)于

vara;//自動升級console.log(a);// undefineda=200;//賦初值還留在原地

變量的傳遞

vara=1;varb=2;varc=3;a=b;//這里改變a的值珍坊,a的值變?yōu)?牺勾,b的值不變?nèi)允?b=c;//這里改變b的值,b的值變?yōu)?阵漏,c的值不變?nèi)允?c=a;//這里改變c的值驻民,c的值變?yōu)?,a的值不變?nèi)允?console.log(a);//2console.log(b);//3console.log(c);//2

8. 區(qū)分變量還是直接量

變量的時(shí)候履怯,不能加引號回还。如果變量加上引號,就變成字符串的直接量了叹洲。

vara=200;console.log("a");//avara="大家好";console.log(a);

引號是“字符串”的定界符邪锌,所以在雙引號里面的a已經(jīng)失去了變量的意思,就是一個字符串a(chǎn)廷臼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末改含,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糙捺,更是在濱河造成了極大的恐慌诫咱,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洪灯,死亡現(xiàn)場離奇詭異坎缭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)签钩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門掏呼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铅檩,你說我怎么就攤上這事憎夷。” “怎么了昧旨?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵拾给,是天一觀的道長。 經(jīng)常有香客問我兔沃,道長蒋得,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任乒疏,我火速辦了婚禮额衙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己窍侧,他們只是感情好县踢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伟件,像睡著了一般硼啤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锋爪,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天丙曙,我揣著相機(jī)與錄音,去河邊找鬼其骄。 笑死亏镰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拯爽。 我是一名探鬼主播索抓,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毯炮!你這毒婦竟也來了逼肯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桃煎,失蹤者是張志新(化名)和其女友劉穎篮幢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體为迈,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡三椿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葫辐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搜锰。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耿战,靈堂內(nèi)的尸體忽然破棺而出蛋叼,到底是詐尸還是另有隱情,我是刑警寧澤剂陡,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布狈涮,位于F島的核電站,受9級特大地震影響鸭栖,放射性物質(zhì)發(fā)生泄漏薯嗤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一纤泵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦捏题、人聲如沸玻褪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽带射。三九已至,卻和暖如春循狰,著一層夾襖步出監(jiān)牢的瞬間窟社,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工绪钥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灿里,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓程腹,卻偏偏與公主長得像匣吊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子寸潦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容