js

導(dǎo)讀

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

編程基本概念

  • 計算機: 處理數(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編寫指令。

詞法

  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把換行符識別為行終止符(故有時候我們可以省略語句結(jié)束的分號,但不是所有)
var a
a 
=
3 
console.log(a)//下一個字符無法解析為當(dāng)前語法的一部分時
(function(){
  console.log(111)
})()

  1. 注釋:js支持兩種注釋
  • 單行注釋
  • 多行注釋
  1. 標識符:標識符就是為程序中的數(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 // 第一個單詞首字母小寫,第二個單詞首字母大寫

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

  1. 分號:js使用分號分隔語句

句法

JavaScript 語句由以下四部分組成

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

值的分類

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

  • 原始值
  • 引用值

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

  • 字面量
  • 變量

原始值

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

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

特點

  1. 原始值的最大特點是不可改變,即沒有辦法改變原始值。
  2. 所有原始值存儲在內(nèi)存棧中。

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

引用值

定義: 引用值指對象。引用值是可修改的(mutable)。
特點

  1. 引用值,也就是對象存儲在堆中。

堆(heap):存儲對象和函數(shù)的內(nèi)存空間。

image
image

字面量

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

  1. 字面量不利于維護;
  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)//報錯

變量

定義變量就是使用標識符表示的可變值。變量是程序中引用值的一種方式,也是一項基本的編程技術(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. 聲明常量時必須賦值;
  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ù)聲明同一個名字

const num = 0
const num = 1 //報錯

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

const PI = 3.1415926

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

let count = 0
count++

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容