国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端面試之路二(javaScript基礎(chǔ)整理)

AbnerMing / 1381人閱讀

摘要:在標(biāo)簽中添加屬性,本質(zhì)上是跟在標(biāo)簽里面寫屬性時一樣的,所以屬性值最終都會編譯為字符串類型。這個節(jié)點包括很多,比如,以及一些方法等方法。一個對象有很多,該集合名字為,里面有其他以及,里面有很多。

一、變量類型和計算 JS中使用typeof能得到哪些類型
變量類型

值類型:變量本身就是含有賦予給它的數(shù)值的,它的變量本身及保存的數(shù)據(jù)都存儲在棧的內(nèi)存塊當(dāng)中

引用類型:引用類型當(dāng)然是分配到堆上的對象或者數(shù)據(jù)變量,根據(jù)官方一點的解釋就是引用類型的變量只包括對其所表示的數(shù)據(jù)引用

對象、數(shù)組、函數(shù)

無限擴展屬性,可能出現(xiàn)內(nèi)存占用比較大的情況

typeof abc      //"undefined"
typeof NaN      //"number"
typeof null     //"object"
typeof console.log //"function"

typeof只能區(qū)分值類型,對引用類型無能為力,只能區(qū)分函數(shù)function

NaN表示特殊的非數(shù)字值,null是空指針,并沒有指向任何一個地址

typeof能區(qū)分的五種基本類型:stringbooleannumberundefinedsymbol和函數(shù)function

變量計算
可能發(fā)生強制類型轉(zhuǎn)換的情況:

字符串拼接

== 運算符

100  ==  "100"  //true
0    ==  ""     //true
null ==  undefined  //true

if語句

    var c = "";
    if(c){
        //....
    }

邏輯運算

 console.log(10 && 0);       //0
 console.log("" || "abc");   //"abc"
 console.log(!window.abc);   //true
 
 
 //判斷一個變量會被當(dāng)做true還是false
 雙非判斷
 var a = 100;
 console.log(!!a);

在js邏輯運算中,0、NaN、""、null、false、undefined都會判為false,其他都為true

 var add_level = (add_step == 5 && 1)||(add_step == 10 && 2)||(add_step == 12 && 4)||(add_step==15 && 5 )|| 0;
 var add_level = {"5":1,"10":2,"15":5,"12":4}[add_step]||0; //更精簡
何時使用 === 何時使用 ==
if(obj.a == null){
    //這里相當(dāng)于obj.a === null || obj.a === undefined,簡寫
    //這是jquery源碼中推薦的寫法,除此之外其他全用 ===
    //主要是用于判斷這個屬性是否存在
}
//判斷函數(shù)參數(shù)是否存在
function (a,b){
    if(a == null){
        ...
    }
}
//這種寫法不能用
 if(xxx == null){
     //可能會報錯,這個參數(shù)未定義  not defined
 }
JS變量按照存儲方式區(qū)分為哪些類型,并描述其特點 如何理解json

JSON是一個JS內(nèi)置對象,常用兩個API

 JSON.stringify({a:10,b:20})
 JSON.parse("{"a":10,"b":20}")

同時也是一種數(shù)據(jù)格式

二、原型和原型鏈 原型規(guī)則

所有的引用類型(數(shù)組、函數(shù)、對象)都具有對象特性,即可自由擴展屬性】

所有的引用類型(數(shù)組、對象、函數(shù))有一個__proto__ 屬性,屬性值是一個普通的對象

所有的函數(shù)都有一個prototype屬性,屬性值也是一個普通的對象

所有的引用類型(數(shù)組、對象、函數(shù)),__proto__屬性指向它的構(gòu)造函數(shù)的prototype屬性

當(dāng)試圖得到一個對象的某個屬性時,如果這個對象本身沒有這個屬性,那么回去他的__proto__(即它的構(gòu)造函數(shù)的prototype中尋找)

原型鏈

instanceof
instanceof:用于判斷引用類型屬于哪個構(gòu)造函數(shù)的方法

f instanceof Foo的判斷邏輯是:

f的__proto__一層一層往上,能否對應(yīng)到Foo.prototype

再試著判斷f instance Object

如何準(zhǔn)確判斷一個變量是否是數(shù)組類型

var arr = []
arr instanceOf Array //true
typeof arr //object,typeof是無法判斷是否是數(shù)組的

通用判斷方法:Object.prototype.toString.call(arr) === "[object Array]"

寫一個原型鏈繼承的例子
function Elem (id){ 
    this.elem = document.getElementById(id);
}
Elem.prototype.html = function(val){ 
    var elem = this.elem;
    if(val){ 
        elem.innerHtml = val;
        return this;   //鏈?zhǔn)讲僮?    }else{ 
        return elem.innerHtml; 
    }
} 

Elem.prototype.on = function(type,fn){
    var elem = this.elem
    elem.addEventListener(type,fn)
}

var div1 = new Elem("content_wrapper")
//div1.html("

ds

") //div1.on("click",function(){ // alert("clicked") // } //) div1.html("

放大放大放大發(fā)范德薩大點的我請薩

").on("click",function(){ alert("clicked"); }).html("

javascript

")
描述創(chuàng)建一個對象的過程

新生成了一個對象

鏈接到原型

綁定 this

返回新對象

function create() {
    let obj = new Object()
    let Con = [].shift.call(arguments)
    obj.__proto__ = Con.prototype
    let result = Con.apply(obj, arguments)
    return typeof result === "object" ? result : obj
}
zepto源碼中如何使用原型鏈 三、作用域和閉包

題目

說一下對變量提升的理解

說明this幾種不同的使用場景

創(chuàng)建10個 < a>標(biāo)簽,點擊的時候彈出對應(yīng)的序號

如何理解作用域

實際開發(fā)中閉包的應(yīng)用

執(zhí)行上下文

范圍:一段

筆試題3:前端使用異步的場景有哪些

需要等待,因為js是單線程語言

五、常見對象

題目

獲取2017-06-10格式的日期

獲取隨機數(shù),要求是長度一直的字符串格式

寫一個能遍歷對象和數(shù)組的通用forEach函數(shù)

Date
Date.now() //獲取當(dāng)前時間毫秒數(shù)
  
var dt = new Date()
dt.getTime()          //獲取毫秒數(shù)
dt.getFullYear()      //年
dt.getMonth()        //月(0-11)
dt.getDate()        //日(0-31)
dt.getHours()        //小時(0-23)
dt.getMinutes()        //分鐘(0-59)
dt.getSeconds()        //秒(0-59)
Math

Math.random():可以用來清除緩存

Array

forEach 遍歷所有數(shù)據(jù)

every 判斷所有元素是否都符合條件

some 判斷是否有至少一個元素符合條件

sort 排序

map 對元素重新組裝,生成新數(shù)組>- 過濾符合條件的元素

array.forEach
arr.forEach( function(item,index){ 
    console.log(index,item); 
});
array.every
var arr = [1,2,3,4,5];
var result = arr.every(function(index,item){
//用來判斷所有的數(shù)組元素,都滿足一個條件 
    if(item<6) 
        return true
});
    console.log(result);
array.some
var result = arr.some(function(index,item){ 
    if(item<5) 
        return true;
}); 
console.log(result);
arry.sort
var arr2 = arr.sort(function(a,b){ 
    //從小到大排序 return a-b; 
    //從大到小排序 
    //return b-a;
})
array.map
arr.map(function(item,index){
    return "
"+index+":"+item+"
" })
array.filter
var arr2 = arr.filter(function (item,index){ 
    //通過某一個條件過濾數(shù)組 
    if(item >= 2) 
        return true
})
對象API
var obj = {
    x:100,
    y:200,
    z:300
}

var key

for(key in obj){
    if(obj.hasOwnProperty(key)){
        console.log(key,obj[key])
    }
}
面試題 解答1:獲取2016-06-10格式的日期
function formatDate(dt){
    if(!dt){
        dt = new Date()
    }

    var year  = dt.getFullYear()
    var month = dt.getMonth() + 1
    var date  = dt.getDate()

    if(month < 10){
        //強制類型轉(zhuǎn)換
        month = "0" + month 
    }

    if(date < 10){
        //強制類型轉(zhuǎn)換
        date = "0" + date
    }
    //強制類型轉(zhuǎn)換
    return year + "-" + month + "-" + date
}

var dt = new Date()
var formatDate = formatDate(dt)
console.log(formatDate)
解答2:獲取隨機數(shù),要求是長度一致的字符串格式
var random = Math.random() + "0000000000";
var random = random.slice(0,10);
解答3:寫一個能遍歷對象和數(shù)組的通用forEach函數(shù)
function forEach(obj,fn){
    var key
    if(obj instanceof Array){
        //準(zhǔn)備判斷是不是數(shù)組
        obj.forEach(function(item,index){
            fn(index,item)
        })
    }else{
        //不是數(shù)組就是對象
        for(key in obj){
            fn(key,obj[k])
        }
    }
}
五、JS-Web-API:

知識點:

js基礎(chǔ)知識:ECMA262標(biāo)準(zhǔn)

JS-Web-API:W3C標(biāo)準(zhǔn)

W3C標(biāo)準(zhǔn)中關(guān)于JS的規(guī)定有:

DOM操作

BOM操作

事件綁定

ajax請求(包括http協(xié)議)

存儲

DOM操作

DOM的本質(zhì)
DocumentObjectModel
瀏覽器把拿到的html代碼,結(jié)構(gòu)化一個瀏覽器能夠識別并且js可操作的一個模型而已

DOM的節(jié)點操作

獲取DOM節(jié)點

Attribute 和 properity

attribute:是HTML標(biāo)簽上的某個屬性,如id、class、value等以及自定義屬性,它的值只能是字符串,關(guān)于這個屬性一共有三個相關(guān)的方法,setAttribute、getAttribute、removeAttribute;

注意:在使用setAttribute的時候,該函數(shù)一定接收兩個參數(shù),setAttribute(attributeName,value),無論value的值是什么類型都會編譯為字符串類型。在html標(biāo)簽中添加屬性,本質(zhì)上是跟在標(biāo)簽里面寫屬性時一樣的,所以屬性值最終都會編譯為字符串類型。

property:是js獲取的DOM對象上的屬性值,比如a,你可以將它看作為一個基本的js對象。這個節(jié)點包括很多property,比如value,className以及一些方法onclik等方法。

一個js對象有很多property,該集合名字為properties,properties里面有其他property以及attributies,attributies里面有很多attribute。
而常用的attribute,id、class、name等一般都會作為property附加到j(luò)s對象上,可以和property一樣取值、賦值

DOM結(jié)構(gòu)操作
面試題1:DOM是那種基本的數(shù)據(jù)結(jié)構(gòu)?

面試題2:DOM操作的常用API有哪些?

獲取DOM節(jié)點,以及節(jié)點的propertyAttribute

獲取父節(jié)點,獲取子節(jié)點

新增節(jié)點,刪除節(jié)點

面試題3:DOM節(jié)點的attr和property有何區(qū)別

property只是一個JS對象的屬性的修改

Attribute是對html標(biāo)簽屬性的修改

BOM操作

問題:

如何檢測瀏覽器的類型

拆解URL各部分

知識點

navigator

screen

location

history

navigator & screen
//navigator
var ua = navigator.userAgent
var isChrome = ua.indexOf("chrome")
console.log(isChrome)

//screen
console.log(screen.width)
console.log(screen.height)

//location
console.log(location.href)
console.log(location.protocol)
console.log(location.pathname)
console.log(location.search)    //?之后的參數(shù)
console.log(location.hash)      //#號之后

//history
history.back()          
history.forward()
六、事件

題目:

編寫一個通用的事件監(jiān)聽函數(shù)

描述時間冒泡流程

對于一個無限下拉加載圖片的頁面,如何給每個圖片綁定事件

知識點:

通用事件綁定

事件冒泡

代理

知識點 通用事件綁定
var btn = document.getElementById("btn1")
btn.addEventListener("click", function(event) {
    console.log("clicked")
})

function bindEvent(elem, type, fn) {
    elem.addEventListener(type, fn)
}

var a = document.getElementById("link1")
bindEvent(a, "click", function(e) {
    e.preventDefault(); //阻止默認(rèn)行為
    alert("clicked")
})
關(guān)于IE低版本的兼容性

IE低版本使用attachEvent綁定事件,和W3C標(biāo)準(zhǔn)不一樣

IE低版本使用量已非常少,很多網(wǎng)站早已不支持

建議對IE低版本的兼容性:了解即可,無須深究

如果遇到對IE低版本要求苛刻的面試,果斷放棄

事件冒泡

e.stopPropatation() //取消冒泡

代理



var div1 = document.getElementById("div1")
div1.addEventListener("click",function(e){
    var target = e.target
    if(target.nodeName === "A"){
        alert(target.innerHTMl)
    }
})

完整寫法

function bindEvent(elem, type, selector, fn) {
    if (fn == null) {
        fn = selector
        selector = null
    }

    elem.addEventListener(type, function(e) {
        var target
        if (selector) {
            target = e.target
            if (target.matches(selector)) {
                fn.call(target, e)
            }
        } else {
            fn(e)
        }
    })
}

//使用代理
var div1 = document.getElementById("div1")
bindEvent(div1, "click", "a", function(e) {
    console.log(this.innerHTML)
})

//不使用代理
var a = document.getElementById("a1")
bindEvent(div1, "click", function(e) {
    console.log(a.innerHTML)
})
面試題 面試題1:編寫一個通用的事件監(jiān)聽函數(shù) 面試題2:描述事件冒泡流程

DOM樹形結(jié)構(gòu)

事件冒泡

組織冒泡

冒泡的應(yīng)用

面試題3:對于一個無限下拉加載圖片的頁面,如何給每個圖片綁定事件

使用代理

知道代理的兩個優(yōu)點

七、Ajax

題目:

手動寫一個ajax,不依賴第三方庫

跨域的幾種實現(xiàn)(原理)

知識點:

xmlHttpRequest

狀態(tài)碼說明

跨域

XMLHttpRequest
var xhr = new XMLHttpRequest()

xhr.open("GET","/api",false)

xhr.onreadystatechange = function(){
    //這里的函數(shù)異步執(zhí)行,可參考之前JS基礎(chǔ)中的異步模塊
    if(xhr.readyState == 4){
        if(xhr.status == 200){
            alert(xhr.responseText)
        }
    }
}

xhr.send(null)
IE兼容性問題

IE低版本使用ActiveXObject,和W3C標(biāo)準(zhǔn)不一樣

IE低版本使用量已經(jīng)非常少,很多網(wǎng)站早已不支持

建議對IE低版本的兼容性:了解即可,無需深究

如果遇到對IE低版本要求苛刻的面試,果斷放棄

.

狀態(tài)碼說明

0 - (未初始化) ????還沒調(diào)用send()方法

1 - (載入)????????????已調(diào)send() 方法,正在發(fā)送請求

2 - (載入完成) ????send()方法執(zhí)行完成,已經(jīng)接收到全部相應(yīng)內(nèi)容

3 - (交互) ???????????正在解析響應(yīng)內(nèi)容

4 - (完成)????????????響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了

.

status說明

2XX - 表示成功處理請求。如200

3XX - 需要重定向,瀏覽器直接跳轉(zhuǎn)

4XX - 客戶端請求錯誤,如404

5XX - 服務(wù)器端錯誤

跨域
什么是跨域

瀏覽器有同源策略,不允許ajax訪問其他域的接口

跨域條件:協(xié)議、域名、端口,有一個不同就算跨域

?

可以跨域的三個標(biāo)簽

服務(wù)器端設(shè)置http header
cookiesessionStoragelocalStorage的區(qū)別

容量

是否會攜帶到ajax中

API易用性

ios safari隱藏模式下,localStorage.getItem會報錯,建議統(tǒng)一用try-catch封裝



面試全家桶

HTML+CSS 面試整理????????????????????????????????--------------------------------> 點這里

前端高級面試整理(三大框架等深入知識) --------------------------------> 點這里

javascript性能優(yōu)化??????????????????????????????????????--------------------------------> 點這里

javascript設(shè)計模式??????????????????????????????????????--------------------------------> 點這里

HTTP相關(guān)面試????????????????????????????????????????????-------------------------------->點這里

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/96621.html

相關(guān)文章

  • 前端開發(fā)-從入門到Offer - 收藏集 - 掘金

    摘要:一些知識點有哪些方法方法前端從入門菜鳥到實踐老司機所需要的資料與指南合集前端掘金前端從入門菜鳥到實踐老司機所需要的資料與指南合集歸屬于筆者的前端入門與最佳實踐。 工欲善其事必先利其器-前端實習(xí)簡歷篇 - 掘金 有幸認(rèn)識很多在大廠工作的學(xué)長,在春招正式開始前為我提供很多內(nèi)部推薦的機會,非常感謝他們對我的幫助。現(xiàn)在就要去北京了,對第一份正式的實習(xí)工作也充滿期待,也希望把自己遇到的一些問題和...

    sf_wangchong 評論0 收藏0
  • 一個普通本科在校生的前端學(xué)習(xí)之路

    摘要:也就正式開始了我的前端之路。在這期間,我還購買并配置了自己的云服務(wù)器,自己的博客系統(tǒng),自己的還學(xué)會了的基本操作。不必說的是高級程序設(shè)計豆瓣鏈接這本書,也就是大家常說的高程,基本上每個合格的前端程序員都要熟讀很多很多次,每次讀都會有新發(fā)現(xiàn)。 原創(chuàng) 西安前端交流會: 卡農(nóng) ovenzeze@qq.com 本文章同步發(fā)表在wdShare西安前端交流會網(wǎng)站、我的個人博客以及segmentF...

    mylxsw 評論0 收藏0
  • 一個普通本科在校生的前端學(xué)習(xí)之路

    摘要:也就正式開始了我的前端之路。在這期間,我還購買并配置了自己的云服務(wù)器,自己的博客系統(tǒng),自己的還學(xué)會了的基本操作。不必說的是高級程序設(shè)計豆瓣鏈接這本書,也就是大家常說的高程,基本上每個合格的前端程序員都要熟讀很多很多次,每次讀都會有新發(fā)現(xiàn)。 原創(chuàng) 西安前端交流會: 卡農(nóng) ovenzeze@qq.com 本文章同步發(fā)表在wdShare西安前端交流會網(wǎng)站、我的個人博客以及segmentF...

    buildupchao 評論0 收藏0
  • 我的阿里之路+Java面經(jīng)考點

    摘要:我的是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)。因為我心理很清楚,我的目標(biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學(xué)習(xí)計劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...

    姘擱『 評論0 收藏0
  • 前端思考 - 收藏集 - 掘金

    摘要:并嘗試用為什么你統(tǒng)計的方式是錯的掘金翻譯自工程師的文章。正如你期望的,文中的前端開發(fā)單一職責(zé)原則前端掘金單一職責(zé)原則又稱單一功能原則,面向?qū)ο笪鍌€基本原則之一。 單頁式應(yīng)用性能優(yōu)化 - 首屏數(shù)據(jù)漸進(jìn)式預(yù)加載 - 前端 - 掘金前言 針對首頁和部分頁面打開速度慢的問題,我們開始對單頁式應(yīng)用性能進(jìn)行優(yōu)化。本文介紹其中一個方案:基于 HTTP Chunk 的首屏數(shù)據(jù)漸進(jìn)式預(yù)加載方案,該方案總...

    LinkedME2016 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<