JS面试题

简述js闭包理解及其优缺点?
解析:
什么是javascript闭包?
javascript允许使用内部函数,内部函数可以访问它们所在的外
部函数中声明的所有局部变量、参数和声明的其他内部函数。当
其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
闭包的好处:
(1 )不增加额外的全局变量,
( 2 )执行过程中所有变量都是在匿名函数内部。
闭包的缺点:
(1 )由于闭包会使得函数中的变量都被保存在内存中,内存消
耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE
中可能导致内存泄露。解决方法是,在退出图数之前,将不使用
的局部变量全部删除。
(2 )闭包会在父函数外部,改变父函数内部变量的值。所以,
如果你把父函数当作对象( object )使用,把闭包当作它的公用
方法( Public Method ) , 把内部变量当作它的私有属性( priv
ate value) , 这时一定要小心。不要随便改变父函数内部变量的值。

apply和call的用途是什么?有什么区别?
call , apply都属于Function.prototype的一个方法,它是Jav
aScript引擎内在实现的,因为属于Function.prototype ,所以
每个Function对象实例(就是每个方法)都有call , apply属性。既
然作为方法的属性,那它们的使用就当然是针对方法的了,这两
个方法是容易混淆的,因为它们的作用一样,只是使用方式不
同。
语法: focall(this, arg1 arg2,arg3) == foo.apply(this, arg
uments) == this.foo(arg1, arg2, arg3);
相同点:两个方法产“生的作用是完全一样的。
不同点:方法传递的参数不同。

function a(){return 1;} var a = 7;alert(a);弹出框的值为:
7

function a(){return 1;} var a;alert(a);弹出框的值为:
一个函数Object

JavaScript如果实现继承?
通过原型和构造器

谈谈对this对象的理解
this是一个关键字,随着函数使用场合不同,this的值会发生变化,但是有一个原则:this指向的是调用函数的那个对象;this一般情况下是全局对象,如果作为方法调用,那么this就是指这个对象;

JavaScript垃圾回收原理
在JavaScript中,如果一个对象不再被引用,那么这个对象就会被GC回收;
如果两个对象相互引用,而不再被第三者所引用,那么这两个互相吸引的对象也会被回收;

谈谈对作用域链的理解
作用域链是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。

new操作符具体干了什么?
1、创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。
2.属性和方法被加入到this引用的对象中。
3、新创建的对象由this所引用,并且最后隐式的返回this

js对象的深度克隆


image.png

JavaScript原型,原型链,有什么特点?
原型对象也是普通的对象,是对象-一个自带隐式的_ proto_
属性,原型也有可能有自己的原型,如果一个原型对象的原型不为nul的话,我们就称之为原型链。
原型链是由- -些用来继承和共享属性的对象组成的(有限的)
对象链。

evel是什么?
是把对应的字符串解析成JS代码并运行;应该避免使用evel,不安全且非常消耗性能;

JavaScript对象的几种创建模式
1,工厂模式2,构造函数模式
3,原型模式4,混合构造函数和原型模式
5,动态原型模式6,寄生构造函数模式
7,稳妥构造函数模式

JavaScript继承的6种方法
1,原型链继承2,借用构造函数继承
3,组合继承(原型+借用构造)4,原型式继承
5,寄生式继承6,寄生组合式继承

从字符串var a = '2015是最重要的一年'截取出

  1. substring (str, end)str是必须输入,必须是正值;end是可选的必须是正值;
    根据字面意思,str为截取的开始位置,字符串的第一个字符位置为0; end为截取的结束位置.substring() 方法返回的子串包括start处的字符,但不包括end 处的字符。

slice(str, end)
slice()方法的用法基本跟substring-致,但slice 0的参数允许负值;
ps:str必须比end小,否则返回空字符串;substr (str, length)
str是必须输入,str允许为负值,用法跟slice()一样;length是截取字符串的长度;

用于判断输入的某个字符是否为空的方法
if(s==null||s.equals(''));
if(s==null||s.length()<=0);
if(s==null||s.isEmpty());

document.write和innerHTML的区别?
document.write只能重绘整个页面,innerHTML可以重绘页面的一部分;

Ajax是什么?
Ajax是一种用于创建快速动态网页的技术。相当于异步JavaScript和XML;
传统的网页(不使用AJAX)如果需要更新内容,必须重新加载整个网页页面;

Ajax的优势?
1.通过异步模式,提升了用户体验
2.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
Ajax在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。

Ajax最大的特点是什么?
可以实现局部刷新;

Ajax的缺点是什么?
1、ajax不支持浏览器back按钮。2、安全问题AJAX暴露了与服务器交互的细节。
3.对搜索弓|擎的支持比较弱。4、破坏了程序的异常机制。5、不容易调试。

css 动画和js 动画的差异
代码复杂度,js 动画代码相对复杂一些
动画运行时,对动画的控制程度上,js 能够让动画,暂停,取消,终止,css 动画不能
添加事件
动画性能,js 动画多了一个 js 解析的过程,性能不如 css 动画好

Javascript 的本地对象,内置对象和宿主对象分别是什么
本地对象 ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象"。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。它们包括:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

内置对象 JS中内置了17个对象,常用的是Array对象、Date对象、正则表达式对象、string对象、Global对象

宿主对象 由ECMAScript实现的宿主环境提供的对象,可以理解为:浏览器提供的对象。所有的BOM和DOM都是宿主对象。

事件冒泡与事件捕获的区别?
事件冒泡:由最具体的元素(目标元素)向外传播到最不具体的元素
事件捕获:由最不确定的元素到目标元素

复杂数据类型如何转变为字符串?
首先,会调用 valueOf 方法,如果方法的返回值是一个基本数据类型,就返回这个值
如果调用 valueOf 方法之后的返回值仍旧是一个复杂数据类型,就会调用该对象的 toString 方法
如果 toString 方法调用之后的返回值是一个基本数据类型,就返回这个值,
如果 toString 方法调用之后的返回值是一个复杂数据类型,就报一个错误。

Ajax 和 Fetch 区别
ajax 是使用 XMLHttpRequest 对象发起的,但是用起来很麻烦,所以 ES6 新规范就有了 fetch ,fetch 发一个请求不用像 ajax 那样写一大堆代码。
使用 fetch 无法取消一个请求,这是因为 fetch 基于 Promise,而 Promise 无法做到这一点。
在默认情况下,fetch 不会接受或者发送 cookies
fetch 没有办法原生监测请求的进度,而 XMLHttpRequest 可以
fetch 只对网络请求报错,对 400,500 都当做成功的请求,需要封装去处理
fetch 由于是 ES6 规范,兼容性上比不上 XMLHttpRequest

冒泡排序算法


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

推荐阅读更多精彩内容

  • 1.介绍js的基本数据类型。Undefined、Null、Boolean、Number、String2.介绍js有...
    lucky婧阅读 698评论 0 5
  • 面试题按类型来分,主要涉及到“技术”与“非技术”两大类,今天我们主要讨论的是“技术类”,在这个大类别下涉及到的子类...
    simple_50a1阅读 2,439评论 1 56
  • 1.JavaScript 的 typeof 返回哪些数据类型? 基础类型包括:Number、String、Bool...
    流泪手心_521阅读 376评论 0 0
  • 1.JavaScript概述(js是什么?) JavaScript是一种基于对象的,事件驱动的,跨平台的,客户端脚...
    jocode阅读 440评论 0 0
  • document load 和 document ready 的区别? JavaScript 中如何检测一个变量是...
    Daeeman阅读 190评论 0 2