導(dǎo)讀
- 編程基本概念
- JS語法是什么
- 詞法
- 句法
- 原始值(值的分類)
- 引用值(值的分類)
- 字面量(值的分類)
- 變量(值的分類)
- 常量(值的分類)
編程基本概念
計算機: 處理數(shù)據(jù)的電子設(shè)備。
計算機硬件:物理設(shè)備,包括cpu、內(nèi)存、硬盤、主板、輸入設(shè)備、輸出設(shè)備等。
計算機軟件:又叫“程序”,是一組可執(zhí)行的指令的集合。每個程序都是為用戶執(zhí)行特定的任務(wù)。比如:聲卡驅(qū)動程序、文字處理軟件word,視頻播放軟件、系統(tǒng)殺毒軟件等。
語句 : 程序中的每一條指令被稱為語句。
JavaScript程序:是一組可執(zhí)行的Javascript語句。
JavaScript語句:使用JavaScript語法編寫的指令。
硬盤:計算機的內(nèi)部存儲空間。硬盤存儲著許多軟件和文件供用戶使用。硬盤存儲數(shù)據(jù)是持續(xù)性的,斷電也會保留。
計算機內(nèi)存:計算機的內(nèi)部存儲空間。內(nèi)存也就是RAM是英文Radom Access Memory的縮寫。是一個臨時存儲數(shù)據(jù)的區(qū)域。當(dāng)在電腦上運行一個軟件時,系統(tǒng)首先會從硬盤把軟件的文件和數(shù)據(jù)讀取到內(nèi)存里,當(dāng)關(guān)閉軟件時,這些文件和數(shù)據(jù)又會返回到硬盤。如果電腦只有RAM沒有硬盤, 用戶必須手動鍵入所有的文件和數(shù)據(jù),內(nèi)存要比硬盤的讀寫速度快的多,但價格也更貴。這就是為什么內(nèi)存比硬盤貴的原因。內(nèi)存由幾個模塊組成 ,這些模塊插入到計算機的主板上,通過數(shù)據(jù)線連接到cpu,u盤、光盤、硬盤不會直接連接cpu
棧:用于存儲靜態(tài)數(shù)據(jù)的空間?;绢愋蛢Υ嬗跅^(qū)的內(nèi)存中,就像樓上說的一樣,他們其實位于棧的某一層,局部變量(基本類型)是哪個函數(shù)的,它就位于那個函數(shù)的那一層。而不是基本類型以“?!钡男问竭M行儲存。這里指的棧其實是函數(shù)調(diào)用棧。
堆:用于存儲動態(tài)數(shù)據(jù)的空間。堆認為是一個很大的內(nèi)存存儲空間,你可以在里面存儲任何類型數(shù)據(jù)。但是這個空間是私有的,操作系統(tǒng)不會管在里面存儲了什么,也不會主動的去清理里面的內(nèi)容,因此在C語言中需要程序員手動進行內(nèi)存管理,以免出現(xiàn)內(nèi)存泄漏,進而影響性能。在棧中存儲不了的數(shù)據(jù)比如對象就會被存儲在堆中,在棧中呢是保留了對象在堆中的地址,也就是對象的引用。
| 棧 | 堆 |
|---|---|
| 原始值和對象地址 | 對象和函數(shù) |
| 編譯時確定大小 | 運行時確定大小 |
| 分配固定大小 | 按需分配空間大小 |
JS語法是什么
JS語法是一套規(guī)則,規(guī)定了如何使用這門語言編寫程序。JS的語法主要包括:
- 詞法:詞法主要規(guī)定了JS語言的基礎(chǔ)規(guī)則,也就是最基本最低級的規(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把換行符識別為行終止符(故有時候我們可以省略語句結(jié)束的分號,但不是所有)
var a
a
=
3
console.log(a)//下一個字符無法解析為當(dāng)前語法的一部分時
(function(){
console.log(111)
})()
- 注釋:js支持兩種注釋
- 單行注釋
- 多行注釋
- 標識符:標識符就是為程序中的數(shù)據(jù)命名的一種方式。比如可以為程序中使用的常量、變量、函數(shù)、屬性命名。命名規(guī)則:
- 可以是字母、數(shù)字、下劃線、美元符號
- 數(shù)字不能開頭
- 不可以是保留字
- 不建議是內(nèi)置對象的屬性名
- 標識符應(yīng)遵循駝峰命名
i
my_variable_name
v13
_dumy
$str
let alert = 'hello' //等于修改了window.alert()
let winSize = 600 // 第一個單詞首字母小寫,第二個單詞首字母大寫
- 保留字:保留字是js語法的組成部分,不能用于標識符。
- 字符集:js使用unicode編寫的。
- 這意味著標識符可以使用中文,但是建議只使用ASKII字符集和數(shù)字
- JS定義了轉(zhuǎn)義序列:即使用“\u"開頭 +十六進制字符
var 中國 = 'hello'
console.log(中國)
console.log(\u4e2d\u56fd)
console.log('\u{1F600}')
- 分號:js使用分號分隔語句
句法
JavaScript 語句由以下四部分組成
- 值:值是程序運行過程中操作的數(shù)據(jù)。
- 運算符:
- 表達式
- 關(guān)鍵字
值的分類
從值是否可以修改角度,JavaScript語法定義了兩種類型的值:
- 原始值
- 引用值
從值是否是變量角度,js的值分為
- 字面量
- 變量
原始值
定義:原始值指不可修改( immutable)的值。原始值包括六種類型:
- 數(shù)值
- 字符串
- 布爾值
- undefined
- null
- symbol
特點:
- 原始值的最大特點是不可改變,即沒有辦法改變原始值。
- 所有原始值存儲在內(nèi)存棧中。
棧(stack) :存儲原始值和引用地址的內(nèi)存空間。
引用值
定義: 引用值指對象。引用值是可修改的(mutable)。
特點
- 引用值,也就是對象存儲在堆中。
堆(heap):存儲對象和函數(shù)的內(nèi)存空間。


字面量
字面量:指在程序中直接使用的值,而不是變量。
特點:字面量適合表示程序中只出現(xiàn)一次的值。如果該值在程序運行過程中經(jīng)常出現(xiàn),建議不要使用字面量,改用變量表示值。原因:
- 字面量不利于維護;
- 字面量可讀性差
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)//報錯
變量
定義:變量就是使用標識符表示的可變值。變量是程序中引用值的一種方式,也是一項基本的編程技術(shù)。變量意味著在程序運行過程中可以修改的量。
聲明變量的語法
在ES6中,變量是通過let關(guān)鍵字聲明的。
用法1:先聲明變量,后賦值
let a
a = 100
用法2:一次聲明多個變量,再賦值
let a, b, c
a = 100
b = 200
c = 300
用法3: 聲明變量的同時賦值
let a =100, b = 200, c = 300
用法4:不可以重復(fù)聲明同一個名字
const num = 0
const num = 1 //報錯
用法5:聲明變量如果不賦值,變量的值默認為undefined
let a
console.log(a) //undefined
常量
變量意味著在程序運行過程中可以修改的量。如果希望永久把一個值賦給名字,可以使用"常量"。
定義: 常量也是使用標識符表示的固定值。
聲明常量語法
在ES6中,常量是通過const關(guān)鍵字聲明的。
特點
- 聲明常量時必須賦值;
- 賦值之后,常量的值不可修改。
用法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ù)聲明同一個名字
const num = 0
const num = 1 //報錯
用法3:只在值不會改變的情況下使用const聲明常量
const PI = 3.1415926
用法4:全部使用const聲明,如發(fā)現(xiàn)確實需要修改值再改用let聲明
let count = 0
count++