知识点内容总览:
- 基础知识
- 原型,原型链
- 作用域,闭包
- 异步,单线程
- JS API
- DOM操作
- Ajax
- 事件绑定
- 开发环境
- 版本管理
- 模块化
- 打包工具
- 运行环境
- 页面渲染
- 性能优化
- 面试技巧
基础工程师主要考察基础知识,高级工程师主要考察项目经验,架构师主要了解对于项目的解决方案。
基础知识要扎实——工程师的自我修养
扎实的基础会在学习新技术时能够更快的接受,对于初级程序员而言,不要把重点放在框架上。
“题”在前面
- 拿到一个面试题,第一时间看到的是什么?
- 考点
- 如何看待网上搜出来,永远看不完的面试题?
- 重要的是掌握基础知识,以不变应万变
- 如何对待接下来遇到的面试题?
- 从题目中提取考点,根据考点,结合题目,来总结答案
基础知识方面考察的内容
- JS变量类型
- 强制类型转换
- 浏览器的渲染过程
- 作用域
- JS模块化
- JS基础算法
JS基础知识
题目一:typeof能得到哪些类型?
- 考点为:变量类型
- 变量类型分为”值类型”和”引用类型”,共有6中类型
- 值类型包括:undefined,string,number,boolean
- 引用类型包括:(对象,数组) = object,function
typeof undefined >> undefined
typeof 'abc' >> string
typeof 123 >> number
typeof true >> boolean
typeof NaN >> number
// 值类型能够得到区分
typeof {} >> object
typeof [] >> object
typeof null >> object
typeof console.log >> function
// 引用类型中,只能区分出函数(在JS中,函数的地位非常高)
题目二:===和==的区别?
- 考点为:强制类型转换
- ===是全等,即完全相等,而==会发生类型转换。
题目三:JS有哪些内置函数?
- 共有以下几种:Object, Array, Boolean, Number, String, Function, Date, RegExp, Error,Symbol(ES6新加入的)
- 这里着重说明一下Symbol,是一个基本数据类型——符号,它是具有唯一性的特殊值。符号并不是对象,而是一种简单标量基本类型!
- 内置函数,也叫原生函数,内建函数。
- 可以被当做构造函数来使用,但是构造出来的是封装对象,而不是基本对象。
- 基本类型是没有.length和.toUpperCase()等等操作的,当遇到这种情况的时候,js会自动的在执行时将其转化为封装对象后,然后使用这些方法。
- 总结,编程时不需要使用封装对象(即:对于数组,对象,函数,正则表达式,要以常量的形式进行创建,不要使用原生函数(也就是使用其构造函数的形式)。),让js引擎自己来判断和选择。
var a = new String("abc") // String {0: "a", 1: "b", 2: "c", length: 3, [[PrimitiveValue]]: "abc"}
typeof a // "object"
a instanceof String // true
Object.prototype.toString.call(a) // "[object String]"
var a = "abc" //"abc" 基本类型
var b = new String("abc") //同第一个例子,封装类型
var c = Object("abc") //和b一样
typeof a // "string"
typeof b // "object"
typeof c // "object"
a instanceof String //false
b instanceof String //true
c instanceof String //true
题目四:JS变量按照存储方式分为哪些类型?并描述其特点。
按照存储方式分类 | 特点 |
---|---|
值类型 | 赋值不会相互干扰 |
引用类型 | 类似将指针的值(不是所指向的值)进行复制,会相互之间有影响,即一个变动内部数值,另一个也会随之变动 |
题目五:如何理解JSON
- JSON只不过是一个JS对象,有两个API:
- JSON.stringify()
- JSON.parse()
var source = {
name: "wufan",
age: "23",
school: "Tsinghua University",
degree: "master"
}
// source code
var result = JSON.stringify(source)
console.log(result)
console.log(typeof result)
// output 注意输出结果是没有空格和换行
"{"name":"wufan","age":"23","school":"Tsinghua University","degree":"master"}"
string
// source code
var result2 = JSON.parse(result)
console.log(result2)
console.log(typeof result2)
// output
{ name: 'wufan',
age: '23',
school: 'Tsinghua University',
degree: 'master' }
object
// source code 传入第二个参数,是个数组[],可以用来过滤关键字
var book = {
"title": "Professional Javascript",
"authors": [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
}
var jsonText = JSON.stringify(book, ["title", "edition"])
// output
"{"title":"Professional Javascript","edition":3}"