如何衡量一个人的 JavaScript 水平?

关注者
2,846
被浏览
497,635
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

@董超 给出的链接只是很基础的javascript语法考察(当然题目的确出得很棒),刷完一本《javascript高级程序设计》的入门者都可以秒答。
仅仅从语法上来考察javascript水平是不合适的,因为javascript和其他语言不一样的最重要一点就是依赖于宿主,光会语法什么都写不出,所以必须考察一些其他的要点。

以下是我为了准备14年9月面试阿里所做的笔记节选:(仅仅是考察点,具体题目和扩展请自己思考)
基础
1,什么是命名空间,变量污染,变量声明提升,预编译?如何检查一段代码执行后是否声明了全局变量?
2,隐式转换的种种规则
3,关于对象,对象的属性可能有哪些特性(attribute)?什么是原型链?如何检测某一属性是在对象中还是原型链中?如何检测是否是普通对象或空对象?写一个工厂模式?(工厂模式也有很多细节,具体可以参考《javascript模式》一书,不是《javascript设计模式》)
4,变量类型检测、特性检测以及异常避免
5,setTimeout的特性
6,数组几个API的手工实现
7,事件
8,正则表达式,至少要明白$1和\1的意思和几个API的用法。
9,javascript如何获得随机unicode字符?
10,JSON.stringify的参数传一个什么对象的时候不能处理?(可以试试JSON.stringify(window))
11,fn.apply的第一个参数是context(函数运行的上下文),那么这个参数传一个数组会怎么处理?
DOM操作
1,实现一些API如getElementsByClass(有很多细节,参见司徒正美的博客)
2,各种宽度高度(clientHeight之类)的含义及各浏览器之间的差异性
3,实现一个带回调函数的插入DOM节点API(须考虑script标签、documentFragment)
CSS操作
1,如何操作CSS的伪类和伪元素?
2,如何检测改浏览器是否支持某个CSS3的特性?
ajax操作
1,get和post的区别及使用要点
2,http协议,包括格式、状态码,cookie操作
3,跨域
4,转换JSON的几种方式,JSON.stringfy有什么使用限制?

性能
1,javascript有哪些性能优化的措施?可看《高性能javascript》

综合:各种插件的设计思路

其他的html5相关和NodeJS相关暂略