1. 说说你对作用域链的理解?

作用域链的作用是保证执行环境里
有权访问的变量和函数是有序的,
作用域链的变量只能向上访问,
变量访问到window对象即被终止,
作用域链向下访问变量是不被允许的; 作用域就是变量与函数的可访问范围,
即作用域控制着变量与函数的可见性
和生命周期。

2. 请说说JavaScript原型,原型链 ?

原型:
当我们访问一个对象的属性时,
每个对象都会在其内部初始化一个属性,
就是prototype(原型); 原型链:
如果这个对象内部不存在这个属性,
那么他就会去prototype里找这个属性,
这个prototype又会有自己的prototype,
于是就这样一直找下去,
也就是我们平时所说的原型链; 两者关系:
instance.constructor.prototype = instance.__proto__

3. 请解释什么是事件代理?

事件代理(Event Delegation),
又称之为事件委托。
是 JavaScript 中常用绑定事件
的常用技巧。 “事件代理”即是把原本需要绑定
的事件委托给父元素,让父元素
担当事件监听的角色。 事件代理的原理是DOM元素的事件冒泡。
使用事件代理的好处是可以提高性能,
可以大量节省内存占用,减少事件注册,
比如在ul上代理所有li的click事件; 此外, 还可以实现动态新增子对象时无需
再次对其绑定事件。

4. new操作符具体完成了哪几个操作?

) 创建一个空对象, 定义this 变量引用该对象,
同时还继承了该函数的原型; ) 属性和方法被加入到 this 引用的对象中; ) 新创建的对象由 this 所引用,
并且最后隐式的返回 this

5. 说几条写JavaScript的基本规范?

) 不要在同一行声明多个变量;
) 请使用===/!==来比较true/false或者数值;
) 使用对象字面量替代new Object这种形式;
) 减少使用全局函数, 全局变量;
) switch语句必须带有default分支;
) if语句必须使用大括号;
) for-in循环中的变量;
应该使用var关键字明确限定作用域;
从而避免作用域全局污染。

6. 如何判断一个对象是否为数组?

function isArray(arg) {
if (typeof arg === 'object') {
return
Object.prototype.toString.call(arg)
=== '[object Array]';
}
return false;
}

7. 冒泡排序?

思路:
每次比较相邻的两个数,
如果后一个比前一个小,换位置; var arr = [, , , , , , ];
function bubbleSort(arr) {
for (var i = ; i < arr.length - ; i++) {
for(var j = ; j < arr.length - ; j++) {
if(arr[j + ] < arr[j]) {
var temp;
temp = arr[j];
arr[j] = arr[j + ];
arr[j + ] = temp;
}
}
}
return arr;
}
console.log(bubbleSort(arr));

8. 快速排序?

思路: 采用二分法,取出中间数,
数组每次和中间数比较,
小的放到左边,大的放到右边; var arr = [, , , , , , ]; function quickSort(arr) {
if(arr.length == ) {
return []; // 返回空数组
}
var cIndex = Math.floor(arr.length / );
var c = arr.splice(cIndex, );
var l = [];
var r = []; for (var i = ; i < arr.length; i++) {
if(arr[i] < c) {
l.push(arr[i]);
} else {
r.push(arr[i]);
}
}
return quickSort(l).concat(c, quickSort(r));
} console.log(quickSort(arr));

最新文章

  1. Lambda表达式入门
  2. iOS 阶段学习第24天笔记(Block的介绍)
  3. HTML5 Canvas绘文本动画(使用CSS自定义字体)
  4. 从零开始学Linux[一]:基本命令:系统信息、目录、文件、文件编辑
  5. 怎么直接让火狐输入json数据,而不是弹出文件保存对话框?
  6. Dijkstra算法亲自实践
  7. Python 异常相关参考
  8. 连续改变Chrome浏览器窗口大小,可以导致内存泄漏
  9. Bloglines订阅Blog部落格RSS网摘 - Blog透视镜
  10. js修改window对象中的url历史记录
  11. TFS2017代码搜索功能
  12. Android studio在新窗口中打开新项目
  13. Mixed Content: xxx This request has been blocked; the content must be served over HTTPS.
  14. PMP:5.项目范围管理
  15. Linux命令区
  16. 自定义jquery公用方法切换当前tab栏
  17. JAVA-最常用的A题语法
  18. 交互软件Axure—高保真原型
  19. [连载]Java程序设计(03)---任务驱动方式:寻找高富帅和屌丝
  20. bat批量重命名文件

热门文章

  1. forword和重定向有什么区别?
  2. eclipse如何汉化,把eclipse改成中文版
  3. java编码规范_缩进和注释
  4. SpringData JPA实现CRUD,分页与多参数排序
  5. [译文]casperjs的API-mouse模块
  6. 关于Hibernate的一个简单小程序
  7. 编辑距离 区间dp
  8. easyui实现多选框,并且获取值
  9. CentOS 7 分区方案
  10. (三)Audio子系统之AudioRecord.startRecording