第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

面試題匯總 JS篇 (一)

標(biāo)簽:
JavaScript

js中有几种数据类型, typeof 返回值有哪几个,如果判断一个对象是不是数组?

js中数据类型有7种,分别是:string\number\boolean\null\undefined\object\array
(注:w3c网站将数组单独列出来算一种数据类型)

typeof返回字符串,其中包括string\number\boolean\undefined\object\function

判断对象是否为数组主要有两种方式:

(1)Object.prototype.toString().call(obj) === ‘[Object Array]’;

(2)Array.isArray(obj);

caller和callee有什么区别?

callee是arguments对象的一个属性,它是正在执行的函数的引用。

caller是该正在执行的函数的调用函数的引用,如果为(顶层)对象,则返回null。

简述js垃圾回收机制,请谈谈你在开发过程中遇到的内存泄露的情况,是如何解决的。

JS具有自动垃圾回收机制(GC),会周期性的找到那些不再使用的变量,然后释放其内存空间。例如函数执行完成后,会释放其中局部变量的内存空间。垃圾回收器会跟踪内存中的变量,判断其有没有用。最常见的方式是清除标记,即垃圾回收器在运行时会为内存中每个变量添加一个标记,然后,去除环境变量以及其所引用的变量的标记,再次之后再被添加上标记的变量视为将被删除的变量,最后进行内存清除,销毁那些带标记的值并回收其内存空间。此外,还有一种叫做引用计次的方式,因为循环引用的缺陷,很少被使用。

JS内存垃圾自动回收的机制下,内存泄露产生的原因往往和不需要的引用有关。下面是一些常见的内存泄露方式以及解决方案:

(1)意外的全局变量或者为this.属性赋值时意外将this指向了全局对象。

解决方案:使用”use strict”,在严格模式下编程。或者干脆雇佣一些高素质人才。

(2)在版本较老的浏览器DOM的循环引用或观察者对象变得不可达可能会导致内存泄露,比如:我为某个按钮绑定了事件,回调函数里引用了某个全局变量。之后我把那个按钮节点删除了。

解决方案:不使用老版本的浏览器(IE9一下);手动remove事件监听器;在不使用DOM节点后将其引用手动覆为null。

(3)被遗忘的定时器或回调函数,没有清理的DOM元素引用。

(4)闭包中无用的函数引用外层函数中的变量。

jquery的事件委托方法on、live、delegate之间有什么区别?

live和delegate在底层均调用on方法,它们的区别在于live方法将this.context(document)作为事件委托的对象,而delegate则可以供用户选择事件委托的对象。on方法是底层方法,bind方法也在底层调用on方法,on与其它时间委托方法的区别在于type和selector换了位置,如果没有指定selector的话,就将事件绑定到元素本身上。

请说说对MVC,MVP和MVVM的理解

MVC即model\view\controller,是最常见的软件架构模式。view是指用户界面,controller则处理业务逻辑,而model则用来存储数据。view传送指令到controller,controller完成业务逻辑后要求model改变状态,model将新数据发送给view,使用户得到反馈。各部分的通信都是单向的。

MVP将controller改为presenter,在这种模式中,各个部分之间的通信都是双向的。view与model不发送直接联系,都通过presenter传递。view非常薄,不部署任何业务逻辑,而presenter非常厚。

MVVM将presenter改为viewModel,和MVP模式非常相似,唯一的区别在于它是双向绑定,view改变,自动反应在viewModel上,反之亦然。

何为跨域?跨域请求资源有几哪种方式?

由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。

跨域请求资源的方式主要有:

(1)JSONP 动态创建script标签

但缺点是只支持get请求,并且很难判断请求是否失败(一般通过判断请求是否超时)。

(2)Proxy代理

这种方式首先将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前端。

(3)CORS跨域

是现代浏览器提供的一种跨域请求资源的方法,需要客户端和服务器端的同时支持。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

JS中错误类型有哪些?请简述一下

(1)syntaxError 语法错误 解析代码时发生的错误

(2)referenceError 引用类型错误 当访问一个不存在的变量时发生的错误

(3)RangeError是当一个值超出有效范围时发生的错误。比如把数组长度为负数,number超出范围(1.7976931348623157e+308),以及函数堆栈超过最大值。

(4)TypeError是变量或参数不是预期类型时发生的错误。比如,对字符串、布尔值、数值等原始类型的值使用new命令,就会抛出这种错误。

(5)EvalError eval函数没有被正确执行时,会抛出EvalError错误。该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容,才继续保留。

(6)URIError是URI相关函数的参数不正确时抛出的错误,比如encodeUri

點(diǎn)擊查看更多內(nèi)容
58人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消