# js语言基础
## js数据类型的特殊性
```
*应对检测使用typeof检测null值返回值是"object"的方法
function type(o) {
return (0 === null) ? 'null' : (typeof o)
}
```
```
*使用toString检测对象是安全、最准确的,先调用对象原型上的toString函数,再调用函数的apply方法在想要检测的对象上执行
var d = new Date()
var m = object.prototype.toString()
alert(m.apply(d))
```
```
*js方法与函数的区别
1.函数是"function"类的实例,与"string""object"等引用类型一样,具有自己的属性和方法,函数名是指向函数对象的指针,函数可以作为参数参与到传参和返回值中。call()和apply()是每个函数都包含的自有方法。
方法(method)是通过对象调用的js函数,是比较特殊的函数,只是跟对象相关
2.函数着重定义,方法强调执行。
obj.fn1(obj.fn2)
调用obj下的fn1方法,并传递obj中名为fn2的函数,方法的执行一般都有返回值,而函数一般作为某个方法的参数
```
```
*parseInt("")内参数如果以0开头,会默认转变八进制,想正常解析要有解析字符串后加一个参数
parseInt("08",10) => 8,意为把十进制数值08转换为十进制数值为8
parseInt("11",8) => 9,意为把八进制数值11转换为十进制数值9
```
```
*parseInt("")内参数如果以0开头,会默认转变八进制,想正常解析要有解析字符串后加一个参数
parseInt("08",10) => 8,意为把十进制数值08转换为十进制数值为8
parseInt("11",8) => 9,意为把八进制数值11转换为十进制数值9
```
```
*js类型
- 基本数据类型(值类型): Undefined Null Boolean Number String 基本类型都是按值访问
- 复杂类型(引用类型): 按内存地址访问Object 该类型实例化的对象,是一组数据和功能(函数)的集合,在其基础上可继承更多的类型,比如 Array() Date() Function()类型,而object 与其继承的类型又统称为引用类型
```
```
*谨慎使用运算符
- 使用 === 与 !== 而不使用 == 与 !=
- 不建议使用 ++ 和 --
- "," 逗号运算符,想正确返回连续的值需要有()括起来
```