·? JS是什么?
JavaScript是一種屬于網(wǎng)絡(luò)的腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開(kāi)發(fā),常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過(guò)嵌入在HTML中來(lái)實(shí)現(xiàn)自身的功能的。
Js(JavaScript)是一種直譯式的腳本語(yǔ)言;是一種動(dòng)態(tài)、弱類型的語(yǔ)言;是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶端腳本語(yǔ)言。通常認(rèn)為它是瀏覽器的一部分,它的解釋器被稱為JavaScript引擎,是客戶端廣泛應(yīng)用的一種腳本語(yǔ)言。
·? JS有何作用?
最早是在HTML網(wǎng)頁(yè)上使用,用來(lái)給HTML網(wǎng)頁(yè)增加動(dòng)態(tài)效果,目前已經(jīng)被廣泛應(yīng)用于Web應(yīng)用程序開(kāi)發(fā),經(jīng)常被用來(lái)為網(wǎng)頁(yè)添加各種各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。
·? JS的常見(jiàn)的使用場(chǎng)景?
用于 HTML 和 web,更可廣泛用于服務(wù)器、PC、筆記本電腦、平板電腦和智能手機(jī)等設(shè)備,瀏覽器端,服務(wù)器端
·? 如何在網(wǎng)頁(yè)中使用JS?
1、HTML標(biāo)簽中內(nèi)嵌JS(不提倡使用):
示例:<button
onclick="javascript:alert('你真點(diǎn)??!')">有本事點(diǎn)我呀!?。?/p>
2、HTML頁(yè)面中直接使用JS:
//JS代碼
3、引用外部JS文件:
·? JS的常用數(shù)據(jù)類型有?
值類型(基本類型):字符串(String)、數(shù)字(Number)、布爾(Boolean)、對(duì)空(Null)、未定義(Undefined)、Symbol。
引用數(shù)據(jù)類型:對(duì)象(Object)、數(shù)組(Array)、函數(shù)(Function)。
·? 引用類型和基礎(chǔ)類型的區(qū)別?
① 引用類型值可添加屬性和方法,而基本類型值則不可以。
?② 在復(fù)制變量值時(shí),基本類型會(huì)在變量對(duì)象上創(chuàng)建一個(gè)新值,再?gòu)?fù)制給新變量。此后,兩個(gè)變量的任何操作都不會(huì)影響到對(duì)方;而引用類型是將存儲(chǔ)在變量對(duì)象的值復(fù)制一份給新變量,但是兩個(gè)變量的值都指向存儲(chǔ)在堆中的一個(gè)對(duì)象,也就是說(shuō),其實(shí)他們引用了同一個(gè)對(duì)象,改變其中一個(gè)變量就會(huì)影響到另一個(gè)變量。
基本數(shù)據(jù)類型指的是簡(jiǎn)單的數(shù)據(jù)段。基本數(shù)據(jù)類型是按值訪問(wèn)的
引用數(shù)據(jù)類型指的是有多個(gè)值構(gòu)成的對(duì)象。引用類型數(shù)據(jù)在棧內(nèi)存中保存的實(shí)際上是對(duì)象在堆內(nèi)存中的引用地址。通過(guò)這個(gè)引用地址可以快速查找到保存中堆內(nèi)存中的對(duì)象。
·? 如何檢測(cè)一個(gè)變量的類型?
? ? typeof:確定變量是字符串、數(shù)值、布爾值還是undefined的最佳工具。
·? JS中的分支方式有?
1、當(dāng)條件滿足時(shí),去運(yùn)行某些語(yǔ)句
??? if結(jié)構(gòu)
2、當(dāng)條件滿足時(shí),去運(yùn)行某些語(yǔ)句
?? 當(dāng)條件不滿足時(shí),去運(yùn)行另外一些一句
??? if ... else ...結(jié)構(gòu)
3:??else … if結(jié)構(gòu)
4:switch-case結(jié)構(gòu): switch 語(yǔ)句用于基于不同的條件來(lái)執(zhí)行不同的動(dòng)作
·? JS中常用的變量及區(qū)別?
變量是存儲(chǔ)信息的容器:number,?string,?boolean,?object,?function,?undefined
數(shù)值變量
文本(字符串)變量
布爾變量,
對(duì)象變量
函數(shù)變量
未定義的變量
·? 截取字符串的方法有?
slice()、substring()、substr()這三種方法
·? var letconst的區(qū)別?
var 關(guān)鍵字聲明的變量不具備塊級(jí)作用域的特性,它在 {} 外依然能被訪問(wèn)到。
let 聲明的變量只在 let 命令所在的代碼塊內(nèi)有效。
const 聲明一個(gè)只讀的常量,一旦聲明,常量的值就不能改變。
·? JS中如何定義函數(shù)?
JavaScript 使用關(guān)鍵字function 定義函數(shù)。函數(shù)同樣可以通過(guò)內(nèi)置的 JavaScript 函數(shù)構(gòu)造器(Function())定義。
·? 為何說(shuō)JS中的函數(shù)也是對(duì)象?
在Javascript中,每一個(gè)函數(shù)實(shí)際上都是一個(gè)函數(shù)對(duì)象.
JavaScript 對(duì)象是擁有屬性和方法的數(shù)據(jù)。
對(duì)象的方法定義了一個(gè)函數(shù),并作為對(duì)象的屬性存儲(chǔ)。
對(duì)象方法通過(guò)添加 () 調(diào)用 (作為一個(gè)函數(shù))。
·? JS中最常用的繼承方式是?
原型鏈繼承,構(gòu)造函數(shù)繼承,
組合繼承是將原型鏈繼承和構(gòu)造函數(shù)結(jié)合起來(lái),從而發(fā)揮二者之長(zhǎng)的一種模式
原型式繼承
寄生式繼承
寄生組合式繼承
·? this是什么?常用指向和改變的方法有?
面向?qū)ο笳Z(yǔ)言中 this表示當(dāng)前對(duì)象的一個(gè)引用。
但在JavaScript 中 this 不是固定不變的,它會(huì)隨著執(zhí)行環(huán)境的改變而改變。
改變this指向的三個(gè)常用方法bind,call和apply
·?ES5/ES6/ES7對(duì)異步編程處理的比較?
ES7的async和await,目前最為簡(jiǎn)略的異步解決方案
異步的幾種實(shí)現(xiàn)方法
(1)回調(diào)函數(shù)
(2)事件監(jiān)聽(tīng)
(3)發(fā)布訂閱(類似于emit,on觀察者模式)
(4)ES6的promise
·? DOM的作用是?
通過(guò) HTML DOM,可訪問(wèn) JavaScript HTML 文檔的所有元素。
當(dāng)網(wǎng)頁(yè)被加載時(shí),瀏覽器會(huì)創(chuàng)建頁(yè)面的文檔對(duì)象模型(Document Object Model)。
HTML DOM 模型被構(gòu)造為對(duì)象的樹(shù):
HTML DOM 樹(shù)
通過(guò)可編程的對(duì)象模型,JavaScript獲得了足夠的能力來(lái)創(chuàng)建動(dòng)態(tài)的 HTML。
JavaScript 能夠改變頁(yè)面中的所有 HTML 元素
JavaScript 能夠改變頁(yè)面中的所有 HTML 屬性
JavaScript 能夠改變頁(yè)面中的所有 CSS 樣式
JavaScript 能夠?qū)?yè)面中的所有事件做出反應(yīng)
·? DOM中獲取元素的方法有?
通過(guò) id 找到 HTML 元素
通過(guò)標(biāo)簽名找到 HTML 元素
通過(guò)類名找到 HTML 元素
·? DOM是如何處理HTML中的常用事件的?
在HTML中的事件處理方式: 只要在按鈕的地方加入onclick事件綁定點(diǎn)擊事件處理的函數(shù),就完成了事件處理。
DOM元素對(duì)象的屬性事件綁定處理方式
DOM元素對(duì)象的addEventListener()函數(shù)添加事件的處理方式
·? BOM的作用是是什么?
瀏覽器對(duì)象模型 (BOM) 使 JavaScript 有能力與瀏覽器"對(duì)話"。
·? BOM和DOM的關(guān)系是?
JavaScript是通過(guò)訪問(wèn)BOM(Browser Object Model)對(duì)象來(lái)訪問(wèn)、控制、修改客戶端(瀏覽器),由于BOM的window包含了document,window對(duì)象的屬性和方法是直接可以使用而且被感知的,因此可以直接使用window對(duì)象的document屬性,通過(guò)document屬性就可以訪問(wèn)、檢索、修改XHTML文檔內(nèi)容與結(jié)構(gòu)。因?yàn)閐ocument對(duì)象又是DOM的根節(jié)點(diǎn)??梢哉f(shuō),BOM包含了DOM(對(duì)象),瀏覽器提供出來(lái)給予訪問(wèn)的是BOM對(duì)象,從BOM對(duì)象再訪問(wèn)到DOM對(duì)象,從而js可以操作瀏覽器以及瀏覽器讀取到的文檔。
·? BOM中常用的方法有?
alert():彈出一個(gè)警告對(duì)話框。
prompt([text],[defaulttext]):彈出一個(gè)輸入對(duì)話框。
confirm(text):彈出一個(gè)確認(rèn)對(duì)話框。如果單擊“確定按鈕”返回true,如果單擊“取* * 消”返回false。 text:要顯示的純文本
close():關(guān)閉窗口
print():打印窗口
open([url],[name],[options]):打開(kāi)一個(gè)新窗口
延時(shí)器:window.setTimeout(“code”,1000);// code一般是一個(gè)函數(shù),但是放在雙引號(hào)下,1000ms
返回值是延時(shí)器的id,給clearTimeout使用
定時(shí)器:window.setInterval(“code”,1000);// code一般是一個(gè)函數(shù),但是放在”“下,1000ms
返回值是定時(shí)器的id,給clearInterval使用