前言:几道面试题:
- JS中使用
typeof
能得到哪些类型?
考点:JS变量类型 - 何时使用
===
何时使用==
?
考点:强制类型转换 window.onload
和DOMContentLoaded
的区别?
考点:浏览器渲染过程- 用JS创建10个
<a>
标签,点击的时候弹出来对应的序号?
考点:作用域 - 简述如何实现一个模块加载器,实现类似
require.js
的基本功能。
考点:JS模块化 - 实现数组的随机排序
考点:JS基础算法
一、变量类型
注意:
① typeof
只能区分值类型,不能区分引用类型。
② 引用类型无法区分{}
、[]
、null
。但可以区分出函数 function
typeof
运算符- 值类型
Undefined
String → ‘abc’
Number → 123
Boolean → true/false - 引用类型
Object → {} [] null
Function → console.log() - 值类型
概念:把数分块存在内存中
特点:值类型的值赋值之后不会相互干涉 - 引用类型
概念:几个变量共用一个内存块
目的:为了节省内存空间
特点:
① 是变量指针的赋值,不是真正意义上的拷贝;修改相互干预
② 可无限扩展属性
二、变量计算 & 强制类型转换
- 字符串拼接
==
运算符
100 == '100' //true
0 == ' ' //true
null == undefined //true
==
和===
的区别- 判断对象的属是
null
或undefined
时,采用==
;
其余情况下均用===
- 判断对象的属是
if(obj.a==null){}
obj.a==null || obj.a===undefined
- if语句
- 逻辑运算符
① 与 &
console.log( 10 & 0 ); // 0
console.log( true & 0 ); // 0 10 转换为 true
② 或 ||
console.log( '' || 'abc' ); // 'abc'
console.log(!window.abc) //true
空字符串转换为false。
③ 非 !
console.log( !window.abc ) // true
window.abc //undefined
!window.abc 转化为 true
④ 判断一个变量会被当做 true 还是 false
var a=100; console.log( !!a )
三、扩展
js 内置函数
- Object
- Array
- Boolean
- Number
- String
- Function
- Date
- RegExp
- Error
json
- 是一种js对象(有2个API )
- 是一种数据格式(大括号里的内容)
{
“name”: 张三;
"age":18;
}
2个API
Json.stringify({ a:10, b:20 })
Json.parse('{ "a":10, "b": 20 }')