常见JS题回顾(1)

  • js中有几种数据类型, typeof 返回值有哪几个,如果判断一个对象是不是数组?
    答:5种简单数据类型(基本数据类型)number、string、boolean、null、undefined,和1种复杂数据类型object。
    typeof操作符的返回值有6种string、number、boolean、undefined、object、function(Null包含在object里返回)。
    判断一个对象是否是数组:(1)Object.prototype.toString.call(obj)==='[object Array]'
    (2)obj.constructor.name==="Array" ()
    (3)obj instanceof Array;(instanceof只能用来判断对象和函数,不能用来判断字符串和数字等)
    (4)Array.isArray(obj);(IE6,7,8不支持)

  • toString()是一个怎样的方法?然而它是如何将一个值从一种类型转化为字符串类型的呢?
    答:它是能将某一个值转化为字符串的方法。Object.prototype.toString.call(value)判断数据类型

  • caller和callee有什么区别?
    答:caller返回一个函数的引用,这个函数调用了当前的函数,如果是顶层调用的话,返回null;
    callee返回正在执行的函数本身的引用,它是arguments的一个属性。

  • 简述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标签
    (2)Proxy代理
    (3)CORS跨域

  • JS中错误类型有哪些?请简述一下
    答:(1)syntaxError 语法错误 解析代码时发生错误
    (2) referenceError 引用类型错误 当访问一个不存在的变量时发生的错误
    (3)RangeError 是当一个值超出有效范围时发生的错误
    (4)TypeError 是变量或参数不是预期类型时发生的错误。
    (5)EvalError eval函数没有被正确执行时,会抛出EvalError错误。
    (6)URIEror是URL相关函数的参数不正确时抛出的错误。

  • window.onload和DOMContentLoaded的区别?
    答:当 onload 事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了。当 DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。

  • 实现数组的随机排序
    答:
    function randomSort(a){
    var arr = a,
    random = [],
    len = arr.length;
    for (var i = 0; i < len; i++) {
    var index = Math.floor(Math.random()*(len - i));
    random.push(a[index]);
    arr.splice(index,1);
    }
    return random;
    }

    var a = [1,2,3,4,5,6,7,8,9,10];
    console.log(randomSort(a));

  • 何时使用===何时使用==?
    答:if(obj.a==null){ //这里相当于obj.a==bull||obj.a==undefined的简写形式 }其余时候用===

  • 用JS创建10个<a>标签,点击的时候弹出来对应的序号?
    答:

  • 简述如何实现一个模块加载器,实现类似require.js的基本功能?
    答:https://blog.csdn.net/xutongbao/article/details/78189667

  • JS中有哪些内置函数?
    答:Object、Array、Boolean、Number、String、Function、Date、RegExp、Error

  • JS变量按照存储方式区分为哪些数据类型
    答:值类型Number\String\Boolean、引用类型Object\Function\Array(好几个变量共用一个内存)

  • 如何理解JSON
    答:JSON是一种数据格式,JSON是一个提供了stringify和parse方法的内置对象,stringify将js对象转化为符合json标准的字符串,parse将符合json标准的字符串转化为js对象。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,865评论 6 518
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,296评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 169,631评论 0 364
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,199评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,196评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,793评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,221评论 3 423
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,174评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,699评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,770评论 3 343
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,918评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,573评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,255评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,749评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,862评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,364评论 3 379
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,926评论 2 361

推荐阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,333评论 0 6
  • 第一章 错误处理: 错误: 程序运行过程中,导致程序无法正常执行的现象(即bug) 现象: 程序一旦出错,默认会报...
    fastwe阅读 1,121评论 0 1
  • Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好...
    small_Sun阅读 741评论 0 0
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,223评论 0 3
  • ❤你对初恋还念念不忘吗? 初恋,是人第一次有心动的感觉,基本上现在很少人能跟初恋走进婚姻的,大都是不了了之的。但人...
    AndyII阅读 197评论 0 3