·? JS是什么?
JavaScript是一種屬于網(wǎng)絡(luò)的腳本語言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來為網(wǎng)頁添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實(shí)現(xiàn)自身的功能的饮戳。
Js(JavaScript)是一種直譯式的腳本語言;是一種動(dòng)態(tài)、弱類型的語言;是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶端腳本語言询吴。通常認(rèn)為它是瀏覽器的一部分,它的解釋器被稱為JavaScript引擎亮元,是客戶端廣泛應(yīng)用的一種腳本語言猛计。
·? JS有何作用?
最早是在HTML網(wǎng)頁上使用爆捞,用來給HTML網(wǎng)頁增加動(dòng)態(tài)效果奉瘤,目前已經(jīng)被廣泛應(yīng)用于Web應(yīng)用程序開發(fā),經(jīng)常被用來為網(wǎng)頁添加各種各樣的動(dòng)態(tài)功能煮甥,為用戶提供更流暢美觀的瀏覽效果盗温。
·? JS的常見的使用場(chǎng)景?
用于 HTML 和 web成肘,更可廣泛用于服務(wù)器卖局、PC、筆記本電腦艇劫、平板電腦和智能手機(jī)等設(shè)備吼驶,瀏覽器端,服務(wù)器端
·? 如何在網(wǎng)頁中使用JS店煞?
1、HTML標(biāo)簽中內(nèi)嵌JS(不提倡使用):
示例:<button
onclick="javascript:alert('你真點(diǎn)胺缱辍顷蟀!')">有本事點(diǎn)我呀!B饧肌鸣个!
2、HTML頁面中直接使用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è)新值,再復(fù)制給新變量啤贩。此后待秃,兩個(gè)變量的任何操作都不會(huì)影響到對(duì)方;而引用類型是將存儲(chǔ)在變量對(duì)象的值復(fù)制一份給新變量瓜晤,但是兩個(gè)變量的值都指向存儲(chǔ)在堆中的一個(gè)對(duì)象锥余,也就是說,其實(shí)他們引用了同一個(gè)對(duì)象痢掠,改變其中一個(gè)變量就會(huì)影響到另一個(gè)變量驱犹。
基本數(shù)據(jù)類型指的是簡單的數(shù)據(jù)段。基本數(shù)據(jù)類型是按值訪問的
引用數(shù)據(jù)類型指的是有多個(gè)值構(gòu)成的對(duì)象足画。引用類型數(shù)據(jù)在棧內(nèi)存中保存的實(shí)際上是對(duì)象在堆內(nèi)存中的引用地址雄驹。通過這個(gè)引用地址可以快速查找到保存中堆內(nèi)存中的對(duì)象。
·? 如何檢測(cè)一個(gè)變量的類型淹辞?
? ? typeof:確定變量是字符串医舆、數(shù)值、布爾值還是undefined的最佳工具象缀。
·? JS中的分支方式有蔬将?
1、當(dāng)條件滿足時(shí)央星,去運(yùn)行某些語句
??? if結(jié)構(gòu)
2霞怀、當(dāng)條件滿足時(shí),去運(yùn)行某些語句
?? 當(dāng)條件不滿足時(shí)莉给,去運(yùn)行另外一些一句
??? if ... else ...結(jié)構(gòu)
3:??else … if結(jié)構(gòu)
4:switch-case結(jié)構(gòu): switch 語句用于基于不同的條件來執(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í)作用域的特性滤灯,它在 {} 外依然能被訪問到。
let 聲明的變量只在 let 命令所在的代碼塊內(nèi)有效。
const 聲明一個(gè)只讀的常量力喷,一旦聲明刽漂,常量的值就不能改變。
·? JS中如何定義函數(shù)弟孟?
JavaScript 使用關(guān)鍵字function 定義函數(shù)贝咙。函數(shù)同樣可以通過內(nèi)置的 JavaScript 函數(shù)構(gòu)造器(Function())定義。
·? 為何說JS中的函數(shù)也是對(duì)象拂募?
在Javascript中,每一個(gè)函數(shù)實(shí)際上都是一個(gè)函數(shù)對(duì)象.
JavaScript 對(duì)象是擁有屬性和方法的數(shù)據(jù)庭猩。
對(duì)象的方法定義了一個(gè)函數(shù),并作為對(duì)象的屬性存儲(chǔ)陈症。
對(duì)象方法通過添加 () 調(diào)用 (作為一個(gè)函數(shù))蔼水。
·? JS中最常用的繼承方式是?
原型鏈繼承录肯,構(gòu)造函數(shù)繼承趴腋,
組合繼承是將原型鏈繼承和構(gòu)造函數(shù)結(jié)合起來,從而發(fā)揮二者之長的一種模式
原型式繼承
寄生式繼承
寄生組合式繼承
·? this是什么论咏?常用指向和改變的方法有优炬?
面向?qū)ο笳Z言中 this表示當(dāng)前對(duì)象的一個(gè)引用。
但在JavaScript 中 this 不是固定不變的厅贪,它會(huì)隨著執(zhí)行環(huán)境的改變而改變蠢护。
改變this指向的三個(gè)常用方法bind,call和apply
·?ES5/ES6/ES7對(duì)異步編程處理的比較?
ES7的async和await养涮,目前最為簡略的異步解決方案
異步的幾種實(shí)現(xiàn)方法
(1)回調(diào)函數(shù)
(2)事件監(jiān)聽
(3)發(fā)布訂閱(類似于emit,on觀察者模式)
(4)ES6的promise
·? DOM的作用是葵硕?
通過 HTML DOM,可訪問 JavaScript HTML 文檔的所有元素贯吓。
當(dāng)網(wǎng)頁被加載時(shí)懈凹,瀏覽器會(huì)創(chuàng)建頁面的文檔對(duì)象模型(Document Object Model)。
HTML DOM 模型被構(gòu)造為對(duì)象的樹:
HTML DOM 樹
通過可編程的對(duì)象模型悄谐,JavaScript獲得了足夠的能力來創(chuàng)建動(dòng)態(tài)的 HTML蘸劈。
JavaScript 能夠改變頁面中的所有 HTML 元素
JavaScript 能夠改變頁面中的所有 HTML 屬性
JavaScript 能夠改變頁面中的所有 CSS 樣式
JavaScript 能夠?qū)撁嬷械乃惺录龀龇磻?yīng)
·? DOM中獲取元素的方法有?
通過 id 找到 HTML 元素
通過標(biāo)簽名找到 HTML 元素
通過類名找到 HTML 元素
·? DOM是如何處理HTML中的常用事件的尊沸?
在HTML中的事件處理方式: 只要在按鈕的地方加入onclick事件綁定點(diǎn)擊事件處理的函數(shù),就完成了事件處理贤惯。
DOM元素對(duì)象的屬性事件綁定處理方式
DOM元素對(duì)象的addEventListener()函數(shù)添加事件的處理方式
·? BOM的作用是是什么洼专?
瀏覽器對(duì)象模型 (BOM) 使 JavaScript 有能力與瀏覽器"對(duì)話"。
·? BOM和DOM的關(guān)系是孵构?
JavaScript是通過訪問BOM(Browser Object Model)對(duì)象來訪問屁商、控制、修改客戶端(瀏覽器),由于BOM的window包含了document蜡镶,window對(duì)象的屬性和方法是直接可以使用而且被感知的雾袱,因此可以直接使用window對(duì)象的document屬性,通過document屬性就可以訪問官还、檢索芹橡、修改XHTML文檔內(nèi)容與結(jié)構(gòu)。因?yàn)閐ocument對(duì)象又是DOM的根節(jié)點(diǎn)望伦×炙担可以說,BOM包含了DOM(對(duì)象)屯伞,瀏覽器提供出來給予訪問的是BOM對(duì)象腿箩,從BOM對(duì)象再訪問到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]):打開一個(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使用