JavaScript介紹
JavaScript是什么
HTML CSS
JavaScript 編程語言 流程控制
Netscape在最初將其腳本語言命名為LiveScript,后來Netscape在與Sun合作之后將其改名為JavaScript。JavaScript最初受Java啟發(fā)而開始設(shè)計(jì)的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規(guī)范也借自Java。
JavaScript現(xiàn)在的意義(應(yīng)用場(chǎng)景)
JavaScript 發(fā)展到現(xiàn)在幾乎無所不能。
1.網(wǎng)頁特效
2.服務(wù)端開發(fā)(Node.js)
3.命令行工具(Node.js)
4.桌面程序(Electron)
5.App(Cordova)
6.控制硬件-物聯(lián)網(wǎng)(Ruff)
7.游戲開發(fā)(cocos2d-js)
JavaScript和HTML、CSS的區(qū)別
HTML:提供網(wǎng)頁的結(jié)構(gòu),提供網(wǎng)頁中的內(nèi)容
CSS: 用來美化網(wǎng)頁
JavaScript: 可以用來控制網(wǎng)頁內(nèi)容,給網(wǎng)頁增加動(dòng)態(tài)的效果
JavaScript初體驗(yàn)
CSS:行內(nèi)樣式、嵌入樣式、外部樣式
javascript的書寫位置
寫在行內(nèi)
<input type="button" value="按鈕"onclick="alert('Hello World')" />
寫在script標(biāo)簽中
<head>
? <script>
? ? alert('Hello World!');
? </script>
</head>
寫在外部js文件中,在頁面引入
<script src="main.js"></script>
注意:引用外部js文件的script標(biāo)簽中不可以寫JavaScript代碼
變量
什么是變量
變量是計(jì)算機(jī)內(nèi)存中存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)符,根據(jù)變量名稱可以獲取到內(nèi)存中存儲(chǔ)的數(shù)據(jù)
如何使用變量
var聲明變量
var age;
變量的賦值
var age;
age = 18;
同時(shí)聲明多個(gè)變量
var age, name, sex;
age = 10;
name = 'zs';
同時(shí)聲明多個(gè)變量并賦值
var age = 10, name = 'zs';
變量的命名規(guī)則和規(guī)范
規(guī)則
1.由字母、數(shù)字、下劃線、$符號(hào)組成,不能以數(shù)字開頭
2.不能是關(guān)鍵字和保留字,例如:for、while。
3.區(qū)分大小寫
規(guī)范
1.變量名必須有意義
2.遵守駝峰命名法。首字母小寫,后面單詞的首字母需要大寫。例如:userName、userPassword
3.變量在內(nèi)存中的存儲(chǔ)
數(shù)據(jù)類型
簡單數(shù)據(jù)類型
Number、String、Boolean、Undefined、Null
Number類型
數(shù)值字面量:數(shù)值的固定String類型
‘a(chǎn)bc’ “abc”
字符串字面量
‘程序猿’,‘程序媛’,
Boolean類型
Boolean字面量:true和false區(qū)分大小寫
計(jì)算機(jī)內(nèi)部存儲(chǔ):true為1,false為0
Undefined和Null
undefined表示一個(gè)聲明了沒有賦值的變量,變量只聲明的時(shí)候值默認(rèn)是undefined
null表示一個(gè)空,變量的值如果想為null,必須手動(dòng)
復(fù)雜數(shù)據(jù)類型
Object
獲取變量的類型
typeof
數(shù)組
為什么要學(xué)習(xí)數(shù)組
之前學(xué)習(xí)的數(shù)據(jù)類型,只能存儲(chǔ)一個(gè)值(比如:Number/String。我們想存儲(chǔ)班級(jí)中所有學(xué)生的姓名,此時(shí)該如何存儲(chǔ)?
數(shù)組的概念
所謂數(shù)組,就是將多個(gè)元素(通常是同一類型)按一定順序排列放到一個(gè)集合中,那么這個(gè)集合我們就稱之為數(shù)組。
數(shù)組的定義
數(shù)組是一個(gè)有序的列表,可以在數(shù)組中存放任意的數(shù)據(jù),并且數(shù)組的長度可以動(dòng)態(tài)的調(diào)整。
函數(shù)
什么是函數(shù)
把一段相對(duì)獨(dú)立的具有特定功能的代碼塊封裝起來,形成一個(gè)獨(dú)立實(shí)體,就是函數(shù),起個(gè)名字(函數(shù)名),在后續(xù)開發(fā)中可以反復(fù)調(diào)用
函數(shù)的作用
封裝一段代碼,將來可以重復(fù)使用
函數(shù)的定義
函數(shù)聲明
function 函數(shù)名(){
? // 函數(shù)體
}
函數(shù)表達(dá)式
var fn = function() {
? // 函數(shù)體
}
函數(shù)的調(diào)用
調(diào)用函數(shù)的語法:
函數(shù)名()
特點(diǎn):
函數(shù)體只有在調(diào)用的時(shí)候才會(huì)執(zhí)行,調(diào)用需要()進(jìn)行調(diào)用。可以調(diào)用多次(重復(fù)使用)
函數(shù)的返回值
當(dāng)函數(shù)執(zhí)行完的時(shí)候,并不是所有時(shí)候都要把結(jié)果打印。我們期望函數(shù)給我一些反饋(比如計(jì)算的結(jié)果返回進(jìn)行后續(xù)的運(yùn)算),這個(gè)時(shí)候可以讓函數(shù)返回一些東西。
函數(shù)其它
匿名函數(shù)
匿名函數(shù):沒有名字的函數(shù)
匿名函數(shù)如何使用:
將匿名函數(shù)賦值給一個(gè)變量,這樣就可以通過變量進(jìn)行調(diào)用
匿名函數(shù)自調(diào)用
關(guān)于自執(zhí)行函數(shù)(匿名函數(shù)自調(diào)用)的作用:防止全局變量污染。
自調(diào)用函數(shù)
匿名函數(shù)不能通過直接調(diào)用來執(zhí)行,因此可以通過匿名函數(shù)的自調(diào)用的方式來執(zhí)行
(function () {
? alert(123);
})();
函數(shù)是一種數(shù)據(jù)類型
function fn() {}
console.log(typeof fn);
函數(shù)作為參數(shù)
因?yàn)楹瘮?shù)也是一種類型,可以把函數(shù)作為兩一個(gè)函數(shù)的參數(shù),在兩一個(gè)函數(shù)中調(diào)用
函數(shù)做為返回值
因?yàn)楹瘮?shù)是一種類型,所以可以把函數(shù)可以作為返回值從函數(shù)內(nèi)部返回,這種用法在后面很常見。
function fn(b) {
? var a = 10;
? return function () {
? ? alert(a+b);
? }
}
fn(15)();
作用域
作用域:變量可以起作用的范圍
全局變量和局部變量
全局變量
在任何地方都可以訪問到的變量就是全局變量,對(duì)應(yīng)全局作用域
局部變量
只在固定的代碼片段內(nèi)可訪問到的變量,最常見的例如函數(shù)內(nèi)部。對(duì)應(yīng)局部作用域(函數(shù)作用域)
變量提升
變量提升
定義變量的時(shí)候,變量的聲明會(huì)被提升到作用域的最上面,變量的賦值不會(huì)提升。
函數(shù)提升
JavaScript解析器首先會(huì)把當(dāng)前作用域的函數(shù)聲明提前到整個(gè)作用域的最前面。