javascript深入浅出 基础
数据类型
六种数据类型:
number
string
boolean
null
undefined
object
隐式转换:
巧用+和-
num-0 转换为数字
num+'' 转换为字符串
===
null===null
undefiend=undefined
NaN ≠ NaN
new Object ≠ new Object
类型比较转换原则
字符串转数字
布尔转数字
对象转基本类型
包装对象:
三种包装类型
number
string
boolean
可以调用对象属性
设置属性不生效,可以使用new 对象()
类型检测:
typeof
基本类型和function
[[Class]]
Object.prototype.toString.apply(变量)
获取内置对象的基元类型 [Object Date],[Object Array],[Object Object]
instanceof
判断对象是否属于某个类
表达式和运算符
表达式: 能计算出值得程序单元
原始表达式
初始化表达式
函数表达式
属性访问表达式
调用表达式
对象创建表达式
运算符:
赋值
算术
字符串
比较
逻辑
位
特殊
条件运算符
逗号运算符
delete
in
instanceof
typeof
new
this
void
语句
函数,for...in,with:
函数定义方式
函数声明 任何地方可调用
函数表达式 后面才能调用
for...in
顺序不确定
enumerable 为false不出现
受原型链影响
with
传入对象,在块语句中可以把属性当变量使用
让js引擎优化更难
try-catch:
try
尝试执行
出现一个异常就退出try
catch
捕捉和处理异常
throw
自定义异常
1 | throw '未定义' ; |
finally
最终执行,肯定会执行
感觉意义不大
示例
1 2 3 4 5 6 7 | try { console.log(str); } catch (err){ console.log(err); } finally { console.log( 'finally' ); } |
严格模式:
作用
语法更合理,更严谨
提供更强的错误检查,提供安全性
使用方式 'use strict'
放在文件头部
放在函数中
使用范围
不允许with
不允许 delete 函数参数
不允许8进制字面量
eval,arguments变为关键字,不能做变量