前端面试问题总结之---JavaScript

js 有哪些基本类型?

  • Undefined、Null、Boolean、Number、String;
  • Object 是复杂数据类型,其本质是由一组无序的名值对组成的。

js 有哪些内置对象?

  • Obiect 是 JavaScript 中所有对象的父对象;
  • 数据封装类对象:Object、Array、Boolean、Number、String;
  • 其它对象:Function、Argument、Math、RegExp、Error 等。

JavaScript原型,原型链 ? 有什么特点?

  每个对象都会在其内部初始化一个属性,就是 prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去 prototype 里找这个属性,这个 prototype 又会有自己的 prototype ,于是这样一直找下去,也就是我们所说的原型链的概念。

特点:

  JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有属于自己的原型副本,当我们修改原型时,与之相关的对象也会继承这一改变。

谈谈this对象的理解?

  • this 总是指向函数的直接调用者(而非间接调用者);
  • 如果有 new 关键字,this 指向 new 出来的那个对象;
  • 在事件中,this 指向触发这个事件的对象,特殊的是,IE中的 attachEvent 中的 this 总是指向全局对象 Window。

什么是闭包(closure),为什么要用它?

  • 闭包是指有权访问另一个函数作用域中变量的函数;
  • 创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量;
  • 利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。

闭包的特性:

  1. 函数内再嵌套函数;
  2. 内部函数可以引用外层的参数和变量;
  3. 参数和变量不会被垃圾回收机制回收。

对JSON 的了解?

  • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式;
  • 它是基于 JavaScript 的一个子集,数据格式简单, 易于读写, 占用带宽小。

undefined 与 null 之间的区别?

  • undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义;
  • null 表示"没有对象",即该处不应该有值; 
  • undefined 的类型 (typeof) 是 undefined,null 的类型 (typeof) 是 object;
  • undefined 转换数值时为NaN,null 转换数值时为0;
  • js 将未赋值的变量默认值设为 undefined;js 从来不会将变量设为 null,它是用来表明某个用 var 声明的变量时没有值的。

document.write 和 innerHTML 的区别?

  • document.write 只能重绘整个页面; 
  • innerHTML 可以重绘页面的一部分。

了解 JS 的事件吗?说说 JS 的事件?

  1. JavaScript 使我们有能力创建动态页面,事件是可以被 JavaScript 侦测到的行为;
  2. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数的事件,比方说,我们可以在用户点击某按钮时产生一个 onClick 事件来触发某个函数,事件在 HTML 页面中定义;
  3. 当用户进入或离开页面时就会触发 onload 和 onUnload 事件;
  4. 表单里面使用的onFocus、onBlur、onChange。

JS 绑定事件的方法?

1. 嵌入 dom:

1 <button onclick="open()">按钮</button>
2 <script>
3     function open(){
4         alert(1);
5     }
6 </script>    

2. 直接绑定:

1 <button id="btn">按钮</button>
2 <script>
3     document.getElementById('btn').onclick = function(){
4         alert(1);
5     }
6 </script>        

3. 事件监听:

1 <button id="btn">按钮</button>
2 <script>
3     document.getElementById('btn').addEventListener('click',function(){
4         alert(1);
5     })
6     document.getElementById('btn').attachEvent('click',function(){
7         alert(1);
8     })
9 </script>    

Ajax 是什么? 如何创建一个Ajax?

  • ajax的全称:Asynchronous Javascript And XML,即异步传输+ js + xml ;
  • 所谓异步,简单解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作;与此同时,页面是不会发生整页刷新的,提高了用户体验。
  1. 创建 XMLHttpRequest 对象,也就是创建一个异步调用对象;
  2. 创建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信息;
  3. 设置响应 HTTP 请求状态变化的函数;
  4. 发送 HTTP 请求;
  5. 获取异步调用返回的数据;
  6. 使用 JavaScript 和 DOM 实现局部刷新。

同步和异步的区别?

  • 同步强调的是顺序性,谁先谁后;异步则不存在这种顺序性;
  • 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作;
  • 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求;等请求完,页面不刷新,新内容也会出现,用户看到新内容。

如何解决跨域问题?

  jsonp、iframe、window.name、window.postMessage、服务器上设置代理页面等。

JavaScript 异步加载的方式有哪些?

  1. 利用 setTimout 实现异步;
  2. 动态创建 script 标签;
  3. 利用 script 标签提供的 async;
  4. 使用 Promise 对象。

有哪些性能优化的方法?

  1. 减少 HTTP 请求次数,减少 DNS 查找;
  2. 用 innerHTML 代替 DOM 操作,减少 DOM 操作次数,优化 JavaScript 性能;
  3. 用 gzip 压缩内容,删除重复的脚本和样式;
  4. 将样式表在顶部,js 代码放在底部。
posted @ 2018-11-26 17:52  连城无忧  阅读(221)  评论(0)    收藏  举报