javascript
JavaScript—基础Day1
JavaScript—基礎(chǔ)Day1
一、JavaScript介紹
1. 輸入和輸出語法
1.1 輸出語法:
-
alert() 函數(shù)來彈出提示框;
- alert() 中只能輸出文本內(nèi)容,但不能理解為innerText
- 全稱: **window.**alert() ,屬于BOM
-
confirm() 函數(shù)來彈出一個(gè)對話框;
-
如果點(diǎn)擊“確定”按鈕,那么 confirm() 函數(shù)會返回布爾值 true;如果點(diǎn)擊“取消”按鈕,那么 confirm() 函數(shù)會返回布爾值 false;
-
全稱: **window.**confirm() ,屬于BOM
- <script type="text/javascript">var res = window.confirm("這里是要顯示的內(nèi)容");if(res == true){alert("你點(diǎn)擊了“確定”按鈕");}else{alert("你點(diǎn)擊了“取消”按鈕");} </script>
-
-
document.write() 方法將內(nèi)容寫入到 HTML 文檔中;
- 可以向 HTML 文檔中寫入 HTML 或者 JavaScript 代碼
-
innerHTML 將內(nèi)容寫入到 HTML 標(biāo)簽中;
- innerHTML 是一個(gè)屬性;
- 通過它可以設(shè)置或者獲取指定 HTML 標(biāo)簽中的內(nèi)容;
-
console.log() 在瀏覽器的控制臺輸出內(nèi)容;
- 可以是字符串或者對象類型;
- 屬于DOM
1.2 輸入語句
- prompt()方法,會彈出一個(gè)允許輸入值的對話框,提供了確定和取消兩個(gè)按鈕,提供預(yù)期輸入值;
- comfirm()方法,彈出一個(gè)確認(rèn)消息對話框,可以獲取true或false值。
2. 字面量
**在計(jì)算機(jī)科學(xué)中,**字面量(literal)是在計(jì)算機(jī)中描述 事/物;
除去表達(dá)式,給變量賦值時(shí),等號右邊都可以認(rèn)為是字面量。
字面量分為字符串字面量、數(shù)組字面量和對象字面量,函數(shù)字面量;
let test="hello world!"; "hello world!"就是字符串字面量,test是變量名;二、變量
1. 變量定義
- 變量是計(jì)算機(jī)存儲數(shù)據(jù)的“容器”;
2. 變量本質(zhì)
- **內(nèi)存:**計(jì)算機(jī)中存儲數(shù)據(jù)的地方,相當(dāng)于一個(gè)空間
- **變量本質(zhì):**是程序在內(nèi)存中申請的一塊用來存放數(shù)據(jù)的小空間
3. JS變量提升
JavaScript中奇怪的一點(diǎn)是你可以在變量和函數(shù)聲明之前使用它們。就好像是變量聲明和函數(shù)聲明被**提升**了代碼的頂部一樣。
JavaScript是單線程語言,所以是按順序執(zhí)行。是一段一段地分析執(zhí)行,先進(jìn)行編譯階段然后是執(zhí)行階段;
在編譯階段階段,代碼真正執(zhí)行前的幾毫秒,會檢測到所有的變量和函數(shù)聲明,所有這些函數(shù)和變量聲明都被添加到名為Lexical Environment(詞法環(huán)境)的JavaScript數(shù)據(jù)結(jié)構(gòu)的內(nèi)存中。所以,使得這些變量和函數(shù)能在它們真正被聲明之前使用。
3.1 函數(shù)提升
sayHi() // Hi there! function sayHi() {console.log('Hi there!') }因?yàn)楹瘮?shù)聲明在編譯階段會被添加到詞法環(huán)境中,當(dāng)JavaScript引擎遇到sayHi()函數(shù)時(shí),它會從詞法環(huán)境中找到這個(gè)函數(shù)并執(zhí)行它。
3.2 var變量提升
console.log(name) // 'undefined' var name = 'John Doe' console.log(name) // John Doe當(dāng)JavaScript在編譯階段會找到var關(guān)鍵字聲明的變量會添加到詞法環(huán)境中,并初始化一個(gè)值undefined,在之后執(zhí)行代碼到賦值語句時(shí),會把值賦值到這個(gè)變量。
4. var,let,const三者的特點(diǎn)和區(qū)別
1. var
- 用var聲明的變量既是全局變量也是頂層變量(在瀏覽器環(huán)境頂層對象指的是window對象)
- 存在變量提升;
- 一個(gè)變量可多次聲明,后面的聲明會覆蓋前面的聲明;
- 在函數(shù)中使用var聲明變量的時(shí)候,該變量是局部的;而如果在函數(shù)內(nèi)不使用var,該變量是全局的;
2. let
- 不存在變量提升,let聲明變量前,該變量不能使用;
- let命令所在的代碼塊內(nèi)有效,在塊級作用域內(nèi)有效;
- let不允許在相同作用域中重復(fù)聲明,注意是相同作用域,不同作用域有重復(fù)聲明不會報(bào)錯(cuò);
3. const
- const聲明一個(gè)只讀的變量,聲明后,值就不能改變;
- const必須初始化;
- const并不是變量的值不能改動,而是變量指向的內(nèi)存地址所保存的數(shù)據(jù)不得改動;
三、數(shù)據(jù)類型
1. 基本(簡單)數(shù)據(jù)類型
- 在存儲時(shí)變量中存儲的是值本身
- number 數(shù)字型 \ string 字符串型 \ boolean 布爾型 \ undefined 未定義型 \ null 空類型
2. 引用(復(fù)雜)數(shù)據(jù)類型
- 在存儲時(shí)變量中存儲的是地址(引用),通過 new 關(guān)鍵字創(chuàng)建的對象(系統(tǒng)對象、自定義對象)
- 如 Object對象、Array對象、Date對象……;
3. JS堆棧
棧:由操作系統(tǒng)自動分配釋放存放函數(shù)的參數(shù)值、局部變量的值等;
- 簡單數(shù)據(jù)類型: 值類型變量的數(shù)據(jù)直接存放在變量(棧空間)中
堆:存儲復(fù)雜數(shù)據(jù)類型(對象),由程序員分配釋放,若程序員不釋放,由垃圾回收機(jī)制回收;
- 復(fù)雜數(shù)據(jù)類型: 引用類型變量(棧空間)里存放的是地址,真正的對象實(shí)例存放在堆空間中
4. undefined與null的區(qū)別
- undefined代表未定義類型 出現(xiàn)在只聲明不賦值的變量默認(rèn)就是undefined
- null代表的就是空 聲明了變量 并且賦值為空 一般作為后期給一個(gè)對象準(zhǔn)備的初始值
5. JS弱類型語言
JS弱類型是指數(shù)據(jù)類型可以被忽略,一個(gè)變量可以賦不同數(shù)據(jù)類型的值。javascript是一種弱類型語言,它允許變量類型的隱式轉(zhuǎn)換,允許強(qiáng)制類型轉(zhuǎn)換等,如字符串和數(shù)值可以自動轉(zhuǎn)化;
而強(qiáng)類型語言一般不允許這么做。
6. 模板字符串
document.write(`我今年${num}歲了`);- `` (反引號)
- 內(nèi)容拼接變量時(shí),用 ${ } 包住變量
7.typeof數(shù)據(jù)判斷經(jīng)典案例
let age = 19; let str = '11';console.log(typeof str + age); //string19console.log(typeof age + str); // number11console.log(typeof(age + str)); // stringconsole.log(typeof(age + +str)); // numberconsole.log(age - str); // 8console.log(typeof(age - str)); // numberconsole.log(typeof(str - age)); // number四、類型轉(zhuǎn)換
1. 隱式轉(zhuǎn)換
- +號兩邊只要有一個(gè)是字符串,都會把另外一個(gè)轉(zhuǎn)成字符串
- 除了+以外的算術(shù)運(yùn)算符 ,- * / 等都會把數(shù)據(jù)轉(zhuǎn)成數(shù)字類型
- +號作為正號解析可以轉(zhuǎn)換成數(shù)字型
- 任何數(shù)據(jù)和字符串相加結(jié)果都是字符串
2. 顯式轉(zhuǎn)換
1. 轉(zhuǎn)換為數(shù)字型
-
Number(數(shù)據(jù))
-
如果字符串內(nèi)容里有非數(shù)字,轉(zhuǎn)換失敗時(shí)結(jié)果為 NaN
-
但是!NaN是number類型的數(shù)據(jù),代表非數(shù)字
-
-
parseInt(數(shù)據(jù))
-
parseFloat(數(shù)據(jù))
2. 轉(zhuǎn)換為字符型
- String(數(shù)據(jù))
- 變量.toString(進(jìn)制)
總結(jié)
以上是生活随笔為你收集整理的JavaScript—基础Day1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两行配置解决github官网访问速度慢的
- 下一篇: 原生JS超级马里奥(第三天)