導(dǎo)讀
- 編程基本概念
- JS語法是什么
- 詞法
- 句法
- 原始值(值的分類)
- 引用值(值的分類)
- 字面量(值的分類)
- 變量(值的分類)
- 常量(值的分類)
編程基本概念
計(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編寫指令潜必。
詞法
- 大小寫:js區(qū)分大小寫
console.log('a' == 'A'')
- 空格:js忽略空格(所以可以格式化代碼便于閱讀)
let a = 1
let a, b, c
for( var i = 0; i < length; i++){
}
- 換行符:js把換行符識(shí)別為行終止符(故有時(shí)候我們可以省略語句結(jié)束的分號(hào),但不是所有)
var a
a
=
3
console.log(a)//下一個(gè)字符無法解析為當(dāng)前語法的一部分時(shí)
(function(){
console.log(111)
})()
- 注釋:js支持兩種注釋
- 單行注釋
- 多行注釋
- 標(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è)單詞首字母大寫
- 保留字:保留字是js語法的組成部分逸贾,不能用于標(biāo)識(shí)符陨仅。
- 字符集: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}')
- 分號(hào):js使用分號(hào)分隔語句
句法
JavaScript 語句由以下四部分組成
- 值:值是程序運(yùn)行過程中操作的數(shù)據(jù)灼伤。
- 運(yùn)算符:
- 表達(dá)式
- 關(guān)鍵字
值的分類
從值是否可以修改角度,JavaScript語法定義了兩種類型的值:
- 原始值
- 引用值
從值是否是變量角度咪鲜,js的值分為
- 字面量
- 變量
原始值
定義:原始值指不可修改( immutable)的值狐赡。原始值包括六種類型:
- 數(shù)值
- 字符串
- 布爾值
- undefined
- null
- symbol
特點(diǎn):
- 原始值的最大特點(diǎn)是不可改變,即沒有辦法改變?cè)贾怠?/li>
- 所有原始值存儲(chǔ)在內(nèi)存棧中嗜诀。
棧(stack) :存儲(chǔ)原始值和引用地址的內(nèi)存空間猾警。
引用值
定義: 引用值指對(duì)象。引用值是可修改的(mutable)隆敢。
特點(diǎn)
- 引用值发皿,也就是對(duì)象存儲(chǔ)在堆中。
堆(heap):存儲(chǔ)對(duì)象和函數(shù)的內(nèi)存空間拂蝎。
字面量
字面量:指在程序中直接使用的值穴墅,而不是變量。
特點(diǎn):字面量適合表示程序中只出現(xiàn)一次的值。如果該值在程序運(yùn)行過程中經(jīng)常出現(xiàn)玄货,建議不要使用字面量皇钞,改用變量表示值。原因:
- 字面量不利于維護(hù)松捉;
- 字面量可讀性差
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)
- 聲明常量時(shí)必須賦值世分;
- 賦值之后,常量的值不可修改缀辩。
用法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++