前端JS知识要点总结(1)

知识点内容总览:

  • 基础知识
    • 原型,原型链
    • 作用域,闭包
    • 异步,单线程
  • 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}"

你可能感兴趣的:(JavaScript,前端)