资讯专栏INFORMATION COLUMN

前端面试题 -- JS篇

DangoSky / 1603人阅读

摘要:原始数据类型引用数据类型两者的区别值存储方式不同原始数据类型将变量名和值都存储在栈内存中引用数据类型将变量名存储在栈内存中,将值存储在堆内存中,并在栈内存中存储值的地址,该地址指向堆内存中的值。

类型

1.js中有哪些数据类型,并解释清楚原始数据类型和引用数据类型

js中共有null,undefined, string,number,boolean,object六种数据类型。

原始数据类型: null,undefined, string,number,boolean

引用数据类型:object

两者的区别
1)值存储方式不同:

原始数据类型:将变量名和值都存储在栈内存中

引用数据类型:将变量名存储在栈内存中,将值存储在堆内存中,并在栈内存中存储值的地址,该地址指向堆内存中的值。

2)赋值方式不同:

当给b赋予另一个a的值
若a值为原始数据类型,直接在栈内存中生成b值,两个变量以后进行值改变不会相互影响

若a值为引用数据类型,赋予b变量的是值地址,通过这个地址,两者指向的其实是堆内存中的同一个值,所以以后a,b任一变量对值进行改变,会直接影响另一个变量的值

2. 解释清楚 null 和 undefined

null表示一个标识被赋值了,且该标识赋值为“空值”,从逻辑角度来看,null值表示空对象指针;

undefined表示声明了标识,但没有给标识赋值。

3. 如何复制一个对象的值?

      function cloneObject(object){
         var newObject = new Object();
         for(var i in object){
             newObject[i] = object[i];
         }
         return newObject;
      }

4. js在什么时候会进行隐式类型转换,转换的结果?

数值运算

if

.调用方法或属性

!和!!

5. 类型识别的方法?

typeof a

可以判别标准类型,除了null之外
typeof 1 返回结果:"number" typeof {} 返回结果:"object"

不能判别具体的对象类型,除了function之外
typeof [1] 返回结果:"object" typeof function(){} 返回结果:"function"

a instanceof b

可以判别内置对象类型
[] instanceof Array 返回结果:true new String() instanceof String 返回结果:true

不能判别原始类型值
"a" instanceof String 返回结果:false

可以判别自定义对象类型

 function Point(x,y){
         this.x = x;
         this.y = y
     }

 var c = new Point(1,2)
 c instanceof Point

返回结果:true

a.constructor

可以判别标准数据类型(undefined和null除外)
"123".constructor == String 返回结果:true

可以判别具体的内置对象类型
[1,2].constructor == Array 返回结果:true

可以判别自定义对象类型

 function Point(x,y){
     this.x = x;
     this.y = y
 }

 var c = new Point(1,2)
 c.constructor == Point

返回结果:true

Object.prototype.toString.call(a)

可以判别标准数据类型
Object.prototype.toString.call(1)返回结果:"[object Number]" Object.prototype.toString.call(undefined) 返回结果:"[object Undefined]"

可以判别内置对象类型
Object.prototype.toString.call([a]) 返回结果:"[object Array]"

不能判别自定义对象类型

  function Point(x,y){
      this.x = x;
      this.y = y
  }
  var c = new Point(1,2)
  Object.prototype.toString.call(c)

返回结果:"[object Object]"

工作中可以写一个函数方便判定

      function type(obj){
          return Object.prototype.toString.call(obj).slice(8,-1)
      }

type("a") 返回结果: "String" type([a]) 返回结果: "Array"

函数

1. 函数里的this什么含义,什么情况下,怎么用?
谁调用的方法或者属性,this就指向谁
如果没有被谁调用,this指向window

2. bind,call,apply方法的使用,什么区别?什么时候用?

3. 函数curry化
函数curry化是什么意思?
把接受多个参数的函数转换为接受单一参数的函数,且函数可以持续接收参数
将一个复杂的问题片段化,使之进行简化

3. 数组和对象有哪些原生方法,列举一下,分别是什么含义,比如链接两个数组用哪个方法,删除数组的指定项。

原型

1. 讲一下 prototype 是什么东西,原型链的理解,什么时候用 prototype?

proto

构造函数

闭包

1.什么是闭包?
2.闭包的作用和使用场景
闭包的作用一:隐藏、封装
闭包的作用二:记忆函数

变量作用域 ajax

1.讲解原生Js实现ajax的原理。

  Ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式。

  Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。

  XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。

  XMLHttpRequest这个对象的属性有:

onreadystatechange 每次状态改变所触发事件的事件处理程序。
responseText 从服务器进程返回数据的字符串形式。
responseXML 从服务器进程返回的DOM兼容的文档数据对象。
status 从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)
status Text 伴随状态码的字符串信息
readyState 对象状态值
0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化) 对象已建立,尚未调用send方法

2 (发送数据) send方法已调用,但是当前的状态及http头未知

3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

正则表达式 Coding Questions

Question: How would you make this work?

add(2, 5); // 7
add(2)(5); // 7
function addto(){
    var length = arguments.length;
    var sum = 0;
    for(var i = 0;i

Make this work: duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5]

     function duplicate(arr){
         var length = arr.length;
         for(var i=0;i

3.如何获取一个大于等于0且小于等于9的随机整数?.

     function randomNum(){
         return Math.floor(Math.random()*10)
     }

4.想要去除一个字符串的第一个字符,有哪些方法可以实现.

     str.slice(1)
     str.substr(1)
     str.substring(1)
     str.replace(/./,"")
     str.replace(str.charAt(0),"")

5.对一个数组(每项都是数值)求和,有哪些方法?
6.If you have var y = 1, x = y = typeof x; What is the value of x?
Answer: "undefined"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79448.html

相关文章

  • 前端最强面经汇总

    摘要:获取的对象范围方法获取的是最终应用在元素上的所有属性对象即使没有代码,也会把默认的祖宗八代都显示出来而只能获取元素属性中的样式。因此对于一个光秃秃的元素,方法返回对象中属性值如果有就是据我测试不同环境结果可能有差异而就是。 花了很长时间整理的前端面试资源,喜欢请大家不要吝啬star~ 别只收藏,点个赞,点个star再走哈~ 持续更新中……,可以关注下github 项目地址 https:...

    wangjuntytl 评论0 收藏0
  • 前端面试及答案 - JS

    摘要:中使用操作符具体做了哪些事情创建了一个空对象空对象的属性指向构造函数的属性执行构造函数,将的指向前端面试题及答案浏览器篇前端面试题及答案篇前端面试题及答案篇前端面试题及答案性能优化篇 这篇文章并不是最全的前端面试题(没有最全,只有更全),只是针对自己面试过程中遇到的一些难题、容易忽略的题做一个简单的笔记,方便后面有面试需要的小伙伴们借鉴,后续内容会不定时更新,有错误之处希望大家不吝指出...

    Shimmer 评论0 收藏0
  • 前端开发面试链接

    摘要:手册网超级有用的前端基础技术面试问题收集前端面试题目及答案汇总史上最全前端面试题含答案常见前端面试题及答案经典面试题及答案精选总结前端面试过程中最容易出现的问题前端面试题整理腾讯前端面试经验前端基础面试题部分最新前端面试题攻略前端面试前端入 手册网:http://www.shouce.ren/post/index 超级有用的前端基础技术面试问题收集:http://www.codec...

    h9911 评论0 收藏0
  • 前端开发面试链接

    摘要:手册网超级有用的前端基础技术面试问题收集前端面试题目及答案汇总史上最全前端面试题含答案常见前端面试题及答案经典面试题及答案精选总结前端面试过程中最容易出现的问题前端面试题整理腾讯前端面试经验前端基础面试题部分最新前端面试题攻略前端面试前端入 手册网:http://www.shouce.ren/post/index 超级有用的前端基础技术面试问题收集:http://www.codec...

    snifes 评论0 收藏0
  • 你不能错过的前端面试合集

    摘要:收集的一些前端面试题从面试题发现不足,进而查漏补缺,比通过面试更难得及各大互联网公司前端笔试面试题篇及各大互联网公司前端笔试面试题篇面试题个和个经典面试题前端开发面试题如何面试前端工程师很重要个变态题解析如何通过饿了么面试轻 收集的一些前端面试题 从面试题发现不足,进而查漏补缺,比通过面试更难得 1 BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 2 BAT...

    ninefive 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<