js

導(dǎo)讀

  1. 編程基本概念
  2. JS語法是什么
  3. 詞法
  4. 句法
  5. 原始值(值的分類)
  6. 引用值(值的分類)
  7. 字面量(值的分類)
  8. 變量(值的分類)
  9. 常量(值的分類)

編程基本概念

  • 計(jì)算機(jī): 處理數(shù)據(jù)的電子設(shè)備。

  • 計(jì)算機(jī)硬件:物理設(shè)備,包括cpu、內(nèi)存、硬盤桑李、主板、輸入設(shè)備、輸出設(shè)備等蜒犯。

  • 計(jì)算機(jī)軟件:又叫“程序”,是一組可執(zhí)行的指令的集合荞膘。每個(gè)程序都是為用戶執(zhí)行特定的任務(wù)罚随。比如:聲卡驅(qū)動(dòng)程序、文字處理軟件word羽资,視頻播放軟件淘菩、系統(tǒng)殺毒軟件等。

  • 語句 : 程序中的每一條指令被稱為語句。

  • JavaScript程序:是一組可執(zhí)行的Javascript語句潮改。

  • JavaScript語句:使用JavaScript語法編寫的指令狭郑。

  • 硬盤:計(jì)算機(jī)的內(nèi)部存儲(chǔ)空間。硬盤存儲(chǔ)著許多軟件和文件供用戶使用汇在。硬盤存儲(chǔ)數(shù)據(jù)是持續(xù)性的翰萨,斷電也會(huì)保留。

  • 計(jì)算機(jī)內(nèi)存:計(jì)算機(jī)的內(nèi)部存儲(chǔ)空間糕殉。內(nèi)存也就是RAM是英文Radom Access Memory的縮寫亩鬼。是一個(gè)臨時(shí)存儲(chǔ)數(shù)據(jù)的區(qū)域。當(dāng)在電腦上運(yùn)行一個(gè)軟件時(shí)阿蝶,系統(tǒng)首先會(huì)從硬盤把軟件的文件和數(shù)據(jù)讀取到內(nèi)存里雳锋,當(dāng)關(guān)閉軟件時(shí),這些文件和數(shù)據(jù)又會(huì)返回到硬盤赡磅。如果電腦只有RAM沒有硬盤魄缚, 用戶必須手動(dòng)鍵入所有的文件和數(shù)據(jù),內(nèi)存要比硬盤的讀寫速度快的多焚廊,但價(jià)格也更貴冶匹。這就是為什么內(nèi)存比硬盤貴的原因。內(nèi)存由幾個(gè)模塊組成 咆瘟,這些模塊插入到計(jì)算機(jī)的主板上嚼隘,通過數(shù)據(jù)線連接到cpu,u盤袒餐、光盤飞蛹、硬盤不會(huì)直接連接cpu

  • :用于存儲(chǔ)靜態(tài)數(shù)據(jù)的空間【难郏基本類型儲(chǔ)存于棧區(qū)的內(nèi)存中卧檐,就像樓上說的一樣,他們其實(shí)位于棧的某一層焰宣,局部變量(基本類型)是哪個(gè)函數(shù)的霉囚,它就位于那個(gè)函數(shù)的那一層。而不是基本類型以“椮盎”的形式進(jìn)行儲(chǔ)存盈罐。這里指的棧其實(shí)是函數(shù)調(diào)用棧。

  • :用于存儲(chǔ)動(dòng)態(tài)數(shù)據(jù)的空間闪唆。堆認(rèn)為是一個(gè)很大的內(nèi)存存儲(chǔ)空間盅粪,你可以在里面存儲(chǔ)任何類型數(shù)據(jù)。但是這個(gè)空間是私有的悄蕾,操作系統(tǒng)不會(huì)管在里面存儲(chǔ)了什么票顾,也不會(huì)主動(dòng)的去清理里面的內(nèi)容,因此在C語言中需要程序員手動(dòng)進(jìn)行內(nèi)存管理,以免出現(xiàn)內(nèi)存泄漏库物,進(jìn)而影響性能霸旗。在棧中存儲(chǔ)不了的數(shù)據(jù)比如對(duì)象就會(huì)被存儲(chǔ)在堆中,在棧中呢是保留了對(duì)象在堆中的地址戚揭,也就是對(duì)象的引用。

原始值和對(duì)象地址 對(duì)象和函數(shù)
編譯時(shí)確定大小 運(yùn)行時(shí)確定大小
分配固定大小 按需分配空間大小

JS語法是什么

JS語法是一套規(guī)則撵枢,規(guī)定了如何使用這門語言編寫程序民晒。JS的語法主要包括:

  • 詞法:詞法主要規(guī)定了JS語言的基礎(chǔ)規(guī)則,也就是最基本最低級(jí)的規(guī)則锄禽。
  • 句法:句法主要規(guī)定了如何使用js編寫指令潜必。

詞法

  1. 大小寫:js區(qū)分大小寫
console.log('a' == 'A'')

  1. 空格:js忽略空格(所以可以格式化代碼便于閱讀)
let a = 1
let a, b, c
for( var i = 0; i < length; i++){

}

  1. 換行符:js把換行符識(shí)別為行終止符(故有時(shí)候我們可以省略語句結(jié)束的分號(hào),但不是所有)
var a
a 
=
3 
console.log(a)//下一個(gè)字符無法解析為當(dāng)前語法的一部分時(shí)
(function(){
  console.log(111)
})()

  1. 注釋:js支持兩種注釋
  • 單行注釋
  • 多行注釋
  1. 標(biāo)識(shí)符:標(biāo)識(shí)符就是為程序中的數(shù)據(jù)命名的一種方式沃但。比如可以為程序中使用的常量磁滚、變量、函數(shù)宵晚、屬性命名垂攘。命名規(guī)則:
  • 可以是字母、數(shù)字淤刃、下劃線晒他、美元符號(hào)
  • 數(shù)字不能開頭
  • 不可以是保留字
  • 不建議是內(nèi)置對(duì)象的屬性名
  • 標(biāo)識(shí)符應(yīng)遵循駝峰命名
i
my_variable_name
v13
_dumy
$str

let alert = 'hello' //等于修改了window.alert()

let  winSize = 600 // 第一個(gè)單詞首字母小寫,第二個(gè)單詞首字母大寫

  1. 保留字:保留字是js語法的組成部分逸贾,不能用于標(biāo)識(shí)符陨仅。
  2. 字符集:js使用unicode編寫的。
  • 這意味著標(biāo)識(shí)符可以使用中文铝侵,但是建議只使用ASKII字符集和數(shù)字
  • JS定義了轉(zhuǎn)義序列:即使用“\u"開頭 +十六進(jìn)制字符
var 中國(guó) = 'hello'
console.log(中國(guó))
console.log(\u4e2d\u56fd)
console.log('\u{1F600}')

  1. 分號(hào):js使用分號(hào)分隔語句

句法

JavaScript 語句由以下四部分組成

  • 值:值是程序運(yùn)行過程中操作的數(shù)據(jù)灼伤。
  • 運(yùn)算符:
  • 表達(dá)式
  • 關(guān)鍵字

值的分類

從值是否可以修改角度,JavaScript語法定義了兩種類型的值:

  • 原始值
  • 引用值

從值是否是變量角度咪鲜,js的值分為

  • 字面量
  • 變量

原始值

定義:原始值指不可修改( immutable)的值狐赡。原始值包括六種類型:

  • 數(shù)值
  • 字符串
  • 布爾值
  • undefined
  • null
  • symbol

特點(diǎn)

  1. 原始值的最大特點(diǎn)是不可改變,即沒有辦法改變?cè)贾怠?/li>
  2. 所有原始值存儲(chǔ)在內(nèi)存棧中嗜诀。

棧(stack) :存儲(chǔ)原始值和引用地址的內(nèi)存空間猾警。

引用值

定義: 引用值指對(duì)象。引用值是可修改的(mutable)隆敢。
特點(diǎn)

  1. 引用值发皿,也就是對(duì)象存儲(chǔ)在堆中。

堆(heap):存儲(chǔ)對(duì)象和函數(shù)的內(nèi)存空間拂蝎。

image
image

字面量

字面量:指在程序中直接使用的值穴墅,而不是變量。
特點(diǎn):字面量適合表示程序中只出現(xiàn)一次的值。如果該值在程序運(yùn)行過程中經(jīng)常出現(xiàn)玄货,建議不要使用字面量皇钞,改用變量表示值。原因:

  1. 字面量不利于維護(hù)松捉;
  2. 字面量可讀性差
console.log('hello world') //字面量
var str = 'hello world'
console.log(str)//變量

console.log(true) //字面量
var flag = false
console.log(flag) //變量

console.log(100) //字面量
var n = 3.14 
console.log(n) //變量

console.log(abc)//報(bào)錯(cuò)

變量

定義變量就是使用標(biāo)識(shí)符表示的可變值夹界。變量是程序中引用值的一種方式,也是一項(xiàng)基本的編程技術(shù)隘世。變量意味著在程序運(yùn)行過程中可以修改的量可柿。

聲明變量的語法

在ES6中,變量是通過let關(guān)鍵字聲明的丙者。

用法1:先聲明變量复斥,后賦值

let a 
a = 100

用法2:一次聲明多個(gè)變量,再賦值

let a, b, c
a = 100
b = 200
c = 300

用法3: 聲明變量的同時(shí)賦值

let a =100, b = 200, c = 300

用法4:不可以重復(fù)聲明同一個(gè)名字

const num = 0
const num = 1 //報(bào)錯(cuò)

用法5:聲明變量如果不賦值械媒,變量的值默認(rèn)為undefined

let a
console.log(a) //undefined

常量

變量意味著在程序運(yùn)行過程中可以修改的量目锭。如果希望永久把一個(gè)值賦給名字,可以使用"常量"纷捞。

定義: 常量也是使用標(biāo)識(shí)符表示的固定值痢虹。

聲明常量語法

在ES6中,常量是通過const關(guān)鍵字聲明的兰绣。

特點(diǎn)

  1. 聲明常量時(shí)必須賦值世分;
  2. 賦值之后,常量的值不可修改缀辩。

用法1:聲明常量建議全部使用大寫字母臭埋,以區(qū)別變量

const RADIUS = 3
const HG = 74;//哈勃常數(shù) (krri/s/Mpc)
const C = 299792.458 ; //真空中的光速 ( krri/s )
const AU = 1.496E8 ;//天文單位 : 地球與太陽間的平均距離 ( krri )

用法2:不可以重復(fù)聲明同一個(gè)名字

const num = 0
const num = 1 //報(bào)錯(cuò)

用法3:只在值不會(huì)改變的情況下使用const聲明常量

const PI = 3.1415926

用法4:全部使用const聲明,如發(fā)現(xiàn)確實(shí)需要修改值再改用let聲明

let count = 0
count++

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末臀玄,一起剝皮案震驚了整個(gè)濱河市瓢阴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌健无,老刑警劉巖荣恐,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異累贤,居然都是意外死亡叠穆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門臼膏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硼被,“玉大人,你說我怎么就攤上這事渗磅∪铝颍” “怎么了检访?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仔掸。 經(jīng)常有香客問我脆贵,道長(zhǎng),這世上最難降的妖魔是什么起暮? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任卖氨,我火速辦了婚禮,結(jié)果婚禮上鞋怀,老公的妹妹穿的比我還像新娘双泪。我一直安慰自己,他們只是感情好密似,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葫盼,像睡著了一般残腌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贫导,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天抛猫,我揣著相機(jī)與錄音,去河邊找鬼孩灯。 笑死闺金,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的峰档。 我是一名探鬼主播败匹,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼讥巡!你這毒婦竟也來了掀亩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤欢顷,失蹤者是張志新(化名)和其女友劉穎槽棍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抬驴,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炼七,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了布持。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豌拙。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鳖链,靈堂內(nèi)的尸體忽然破棺而出姆蘸,到底是詐尸還是另有隱情墩莫,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布逞敷,位于F島的核電站狂秦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏推捐。R本人自食惡果不足惜裂问,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牛柒。 院中可真熱鬧堪簿,春花似錦、人聲如沸皮壁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛾魄。三九已至虑瀑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滴须,已是汗流浹背舌狗。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扔水,地道東北人痛侍。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像魔市,于是被迫代替她去往敵國(guó)和親祥山。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笤成,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • topics: 1.The Node.js philosophy 2.The reactor pattern 3....
    宮若石閱讀 1,084評(píng)論 0 1
  • 第一章1,什么叫程序:程序就是計(jì)算機(jī)按照人類完成事物的步驟和邏輯矫废,通過計(jì)算機(jī)命令來逐步執(zhí)行最終實(shí)現(xiàn)目標(biāo)的一種機(jī)器語...
    悟名先生閱讀 952評(píng)論 0 4
  • src href url 1 計(jì)算機(jī)語言: 機(jī)器語言(二進(jìn)制) 匯編語言 高級(jí)語言 2 計(jì)算機(jī)基礎(chǔ) ...
    烈火澆頭閱讀 353評(píng)論 0 0
  • 一磺樱,JavaScript的書寫格式 1.行內(nèi)腳本:寫在HTML標(biāo)簽內(nèi)部,通過一個(gè)屬性節(jié)點(diǎn)來添加磅网,不推薦使用谈截,例如“...
    劉遠(yuǎn)舟閱讀 462評(píng)論 0 0
  • JavaScript 的組成 JavaScript 由以下三部分組成: ECMAScript(核心):JavaSc...
    糖醋里脊120625閱讀 259評(píng)論 0 0