引導(dǎo)
學(xué)習(xí)目標(biāo):
| 節(jié)數(shù) | 知識點 | 要求 |
|---|---|---|
| 第一節(jié)(js的前世今生) | js簡介 | 了解 |
| 第二節(jié)(js的語法結(jié)構(gòu)) | 頁面引入js的幾種方式 | 了解 |
| js輸出的幾種方式 | 了解 | |
| js的語法規(guī)則 | 了解 | |
| 第三節(jié)(Javascript名詞解釋) | 數(shù)字字面量 | 掌握 |
| 字符串字面量 | 掌握 | |
| 常量 | 理解 | |
| 第四節(jié)(Javascript變量命名規(guī)則(重點)) | 聲明變量 | 掌握 |
| 變量提升 | 掌握 | |
| 變量的命名規(guī)則 | 了解 | |
| 第五節(jié)(Javascript數(shù)據(jù)類型(重點)) | 基本數(shù)據(jù)類型 | 掌握 |
| 第六節(jié)(Javascript運算符(重點)) | 邏輯運算符 | 掌握 |
什么是語言?
什么是計算機(jī)語言?
機(jī)器語言,匯編語言,高級語言。
少兒編程語言
計算機(jī)存儲單位
計算機(jī)數(shù)據(jù)存儲是以“字節(jié)”(Byte)為單位,數(shù)據(jù)傳輸是以大多是以“位”(bit,又名“比特”)為單位,一個位就代表一個0或1(即二進(jìn)制),每8個位(bit,簡寫為b)組成一個字節(jié)(Byte,簡寫為B),是最小一級的信息單位。
1B(Byte字節(jié))=8bit,
1KB (Kilobyte 千字節(jié))=1024B,
1MB (Mega byte 兆字節(jié) 簡稱“兆”)=1024KB,
1GB (Giga byte 吉字節(jié) 又稱“千兆”)=1024MB,
1TB (Tera byte 萬億字節(jié) 太字節(jié))=1024GB,其中1024=2^10 ( 2 的10次方),
1PB(Peta byte 千萬億字節(jié) 拍字節(jié))=1024TB,
1EB(Exa byte 百億億字節(jié) 艾字節(jié))=1024PB,
1ZB (Zetta byte 十萬億億字節(jié) 澤字節(jié))= 1024 EB,
1YB (Yotta byte 一億億億字節(jié) 堯字節(jié))= 1024 ZB,
1BB (Bronto byte 一千億億億字節(jié))= 1024 YB,
Javascript簡介
js的前世今生
備注94通過微信
JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,最早是在HTML網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。
動態(tài):在運行時確定數(shù)據(jù)類型。變量使用之前不需要類型聲明,通常變量的類型是被賦值的那個值的類型。
弱類:計算時可以不同類型之間對使用者透明地隱式轉(zhuǎn)換,即使類型不正確,也能通過隱式轉(zhuǎn)換來得到正確的類型。
原型:新對象繼承對象(作為模版),將自身的屬性共享給新對象,模版對象稱為原型。這樣新對象實例化后不但可以享有自己創(chuàng)建時和運行時定義的屬性,而且可以享有原型對象的屬性。
腳本語言:不需要編譯器編譯。
在1995年時,由Netscape公司的布蘭登·艾奇(Brendan Eich,1961年~),JavaScript的發(fā)明人,在網(wǎng)景導(dǎo)航者瀏覽器(Navigator)上首次設(shè)計實現(xiàn)而成。
由于網(wǎng)景公司希望能在靜態(tài)HTML頁面上添加一些動態(tài)效果,于是叫Brendan Eich這哥們在兩周之內(nèi)設(shè)計出了JavaScript語言。你沒看錯,這哥們只用了10天時間。
為什么起名叫JavaScript?原因是當(dāng)時Java語言非常紅火,所以網(wǎng)景公司希望借Java的名氣來推廣,但事實上JavaScript除了語法上有點像Java,其他部分基本上沒啥關(guān)系。
Netscape在最初將其腳本語言命名為LiveScript,后來Netscape在與Sun合作之后將其改名為JavaScript。
Javascript的三個主要組成部分是:ECMAScript(核心),DOM(文檔對象模型),BOM(瀏覽器對象模型)。
和Java區(qū)別
js的特點
1、是一種解釋性腳本語言(代碼不進(jìn)行預(yù)編譯)。
2、主要用來向HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)頁面添加交互行為。
3、可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離。
4、跨平臺特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺下運行(如Windows、Linux、Mac、Android、iOS等
5、它是單線程編程語言。
js在網(wǎng)頁中的應(yīng)用
表單的驗證,放大鏡,添加購物車等
ECMAScript 和 JavaScript 的關(guān)系
? 1996 年 11 月,JavaScript 的創(chuàng)造者Netscape公司,決定將 JavaScript 提交給標(biāo)準(zhǔn)化組織 ECMA,希望這種語言能夠成為國際標(biāo)準(zhǔn)。
? 因為網(wǎng)景開發(fā)了JavaScript,一年后微軟模仿JavaScript開發(fā)了JScript,為了讓JavaScript成為全球標(biāo)準(zhǔn),幾個公司聯(lián)合ECMA(European Computer Manufacturers Association)組織定制了JavaScript語言的標(biāo)準(zhǔn),被稱為ECMAScript標(biāo)準(zhǔn)。
所以簡單說來就是,ECMAScript是一種語言標(biāo)準(zhǔn),而JavaScript是網(wǎng)景公司對ECMAScript標(biāo)準(zhǔn)的一種實現(xiàn)。那為什么不直接把JavaScript定為標(biāo)準(zhǔn)呢?因為JavaScript是網(wǎng)景的注冊商標(biāo)。不過大多數(shù)時候,我們還是用JavaScript這個詞。如果你遇到ECMAScript這個詞,簡單把它替換為JavaScript就行了。
由于JavaScript的標(biāo)準(zhǔn)——ECMAScript在不斷發(fā)展,最新版ECMAScript 6標(biāo)準(zhǔn)(簡稱ES6,有時也被稱為ES2015)已經(jīng)在2015年6月正式發(fā)布了,所以,講到JavaScript的版本,實際上就是說它實現(xiàn)了ECMAScript標(biāo)準(zhǔn)的哪個版本。
Javascript發(fā)展歷史
1995年12月4日 Netscape公司與Sun公司聯(lián)合發(fā)布了JavaScript語言。
1996年03月 Navigator 2.0瀏覽器正式內(nèi)置了JavaScript腳本語言。
1997年07月 ECMAScript 1.0發(fā)布。
1998年06月 ECMAScript 2.0版發(fā)布。
1999年12月 ECMAScript 3.0版發(fā)布,成為JavaScript的通行標(biāo)準(zhǔn),得到了廣泛支持。
2007年10月 ECMAScript 4.0版草案發(fā)布
2009年12月 ECMAScript 5.0版正式發(fā)布
2015年06月 ECMAScript 6正式發(fā)布
各個主要瀏覽器內(nèi)核和引擎
? 一個完整的瀏覽器包含瀏覽器內(nèi)核和瀏覽器的外殼(shell)。瀏覽器核心——內(nèi)核分成兩部分:渲染引擎和js引擎。
? 瀏覽器內(nèi)核主要指的是瀏覽器的渲染引擎,2013 年以前,代表有 Trident(IE),Gecko(firefox),Webkit(Safari chrome 等)以及 Presto(opera)。2013 年以后,谷歌開始研發(fā) blink 引擎,chrome 28 以后開始使用,而 opera 則放棄了自主研發(fā)的 Presto 引擎,投入谷歌懷抱,和谷歌一起研發(fā) blink 引擎,國內(nèi)各種 chrome系的瀏覽器(360、UC、QQ、2345 等等)也紛紛放棄 webkit,投入 blink 的懷抱。
? 2015年微軟推出自己新的瀏覽器,原名叫斯巴達(dá),后改名edge,使用edge引擎
edge瀏覽器仍然使用Chakra引擎
1、IE瀏覽器內(nèi)核:Trident內(nèi)核,也是俗稱的IE內(nèi)核;
2、Chrome瀏覽器內(nèi)核:統(tǒng)稱為Chromium內(nèi)核或Chrome內(nèi)核,以前是Webkit內(nèi)核,現(xiàn)在是Blink內(nèi)核;
3、Firefox瀏覽器內(nèi)核:Gecko內(nèi)核,俗稱Firefox內(nèi)核;
4、Safari瀏覽器內(nèi)核:Webkit內(nèi)核;
5、Opera瀏覽器內(nèi)核:最初是自己的Presto內(nèi)核,后來是Webkit,現(xiàn)在是Blink內(nèi)核;
6、360瀏覽器、獵豹瀏覽器內(nèi)核:IE+Chrome雙內(nèi)核;
7、搜狗、遨游、QQ瀏覽器內(nèi)核:Trident(兼容模式)+Webkit(高速模式);
8、百度瀏覽器、世界之窗內(nèi)核:IE內(nèi)核;
9、2345瀏覽器內(nèi)核:以前是IE內(nèi)核,現(xiàn)在也是IE+Chrome雙內(nèi)核;
常用的IDE介紹
IDE:集成開發(fā)環(huán)境(Integrated Development Environment )
Webstorm,visual studio code,sublime,atom,hbuilder,editplus,nodepad等
js的語法結(jié)構(gòu)
頁面引入js的幾種方式
第一種方式:內(nèi)部方式
第二種方式:外部結(jié)構(gòu)
第三種方式:行內(nèi)方式
js輸出的幾種方式
1、使用 window.alert() 彈出警告框。
2、使用 document.write() 方法將內(nèi)容寫到 HTML 文檔中。
3、使用 innerHTML 寫入到 HTML 元素。
4、使用 console.log() 寫入到瀏覽器的控制臺。
js的語法規(guī)則
1、分號是語句結(jié)束的標(biāo)志,分號不是必須的,我們不建議這樣做,嚴(yán)格來說,語句要加上分號。
2、 js會忽略多個空格和換行。
3、字符集
utf-8:統(tǒng)一國際編碼,兼容各個國家的語言
gb2312/gbk:簡體中文編碼
big5:繁體中文編碼
4、變量區(qū)分大小寫
5、注釋
回顧一下html注釋:
回顧一下css的注釋:
/*內(nèi)容*/
js的注釋語句
單行注釋://內(nèi)容
多行注釋:/*內(nèi)容*/
問:為什么要加注釋?
答:為了方便別人也是為了方便自己。
Javascript名詞解釋
在編程語言中,一般固定值稱為字面量,如 3.14。給變量賦值時,等號右邊都可以認(rèn)為是字面量。英語叫做literals,有些書上叫做直接量。
數(shù)字字面量
25,98.23
var num = 92;
字符串字面量
‘123’,“Hello”
[12,2,3]
常量
什么是常量?
常量:就是其值不能改變的。
怎樣定義一個常量?
const HOST = “l(fā)ocalhost”;
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-E0D0aDmK-1608010648257)(020101JS初識.assets/image-20200808101326346.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-IKQtV2pk-1608010648260)(020101JS初識.assets/image-20200808101352692.png)]
const也是塊級作用域
const聲明的常量必須初識化,而let聲明的變量不用
const實際上保證的,并不是變量的值不得改動,而是變量指向的那個內(nèi)存地址所保存的數(shù)據(jù)不得改動。對于簡單類型的數(shù)據(jù)(數(shù)值、字符串、布爾值),值就保存在變量指向的那個內(nèi)存地址,因此等同于常量。但對于復(fù)合類型的數(shù)據(jù)(主要是對象和數(shù)組),變量指向的內(nèi)存地址,保存的只是一個指向?qū)嶋H數(shù)據(jù)的指針,const只能保證這個指針是固定的(即總是指向另一個固定的地址),至于它指向的數(shù)據(jù)結(jié)構(gòu)是不是可變的,就完全不能控制了
Javascript變量命名規(guī)則(重點)
聲明變量
變量是干什么的,是存儲數(shù)據(jù)的,那存儲什么種類數(shù)據(jù)呢?
聲明變量使用關(guān)鍵字:var(variable)
你給它賦什么類型的值,那么這個變量就是什么數(shù)據(jù)類型。
內(nèi)存中堆區(qū)和棧區(qū)
顯式聲明與隱式聲明區(qū)別
JS中變量聲明分顯式聲明和隱式聲明。
var name = 'muzidigbig';//顯式聲明
name = 'muzidigbig';//隱式聲明(為全局對象(window)的一個屬性)
JavaScript 嚴(yán)格模式(use strict)
變量提升
變量一定要先聲明后使用,如果先使用后聲明,js的內(nèi)部機(jī)制自然使變量提升。
let 和var 的區(qū)別
var: variable,它是可變的。
let: 塊作用域。
變量名的命名規(guī)則
變量的命名:變量是由字母、數(shù)字、下劃線、$ 組成,但第一個字符必須是字母或者是下劃線、$開頭。
$不建議使用,它可能會和其他的框架語法沖突,或者是函數(shù)的名字沖突
1、JavaScript語言的標(biāo)識符對大小寫敏感,所以a和A是兩個不同的標(biāo)識符。
2、首字母可以是任意字母以及美元符號和下劃線。剩余可以是任意字母,美元符號,下劃線和數(shù)字
3、不能使用javascript中的關(guān)鍵字(保留字)來命名變量
4、中文也可以聲明變量,不建議使用它。
變量的命名方式
第一種命名:帕斯卡命名(大駝峰式命名)
每個單詞的首字符大寫。
例如:UserName。
第二種命名:小駝峰式命名
首個單詞的首字母小寫,其他后面單詞的首字母大寫。
例如:
例如:userName
第三種命名:匈牙利式命名
數(shù)據(jù)類型+單詞(變量名)
Integer+age
var Iage = 25;
String+address
var Saddress = “西安”;
Javascript數(shù)據(jù)類型(重點)
在此基本的數(shù)據(jù)類型的基礎(chǔ)上又增加了一個基本數(shù)據(jù)類型:Symbol,Symbol 是 ES6 引入了一種新的原始數(shù)據(jù)類型,表示獨一無二的值。
打印變量的數(shù)據(jù)類型:typeof
請注意:
NaN 的數(shù)據(jù)類型是 number
數(shù)組(Array)的數(shù)據(jù)類型是 object
日期(Date)的數(shù)據(jù)類型為 object
null 的數(shù)據(jù)類型是 object
未定義變量的數(shù)據(jù)類型為 undefined
基本數(shù)據(jù)類型
數(shù)字類型(number)
c 語言中:
int(整數(shù)),float(單精度浮點型),double(雙精度浮點型),char(字符)
string(字符串)。
二進(jìn)制(binary):0b101010101
八進(jìn)制:0o2535
十六進(jìn)制:0x69852
進(jìn)制轉(zhuǎn)換:
toString():十進(jìn)制轉(zhuǎn)換其他的進(jìn)制
parseInt():其他的進(jìn)制轉(zhuǎn)換十進(jìn)制
最大值:MAX_VALUE
最小值:MIN_VALUE
浮點數(shù)不能比較
NaN:Not a Number:不是一個數(shù)值
一些特殊情況(除數(shù)為0,最大值變化)
布爾類型(boolean)
true(真),false(假),都是小寫的。
TRUE,FALSE,True,False:這些都不正確。
字符串類型(string)
字符串:加單引號或者是雙引號
字符串連接:使用的是+
模板字符串:
undefined
typeof undefined
null
typeof null
null == undefined
null和undefined的區(qū)別
1、類型不相等
2、強制類型轉(zhuǎn)換值不一樣
var re1 = Number(undefined);//NaN
var re2 = Number(null);//0
3、比較
null == undefined;//true
null === undefined;//false
引用類型(object)
Javascript運算符(重點)
算術(shù)運算符
+,-,,/,%(求余數(shù)),++,--,*(求冪數(shù)-es7新增)