类型
ECMAScript语言类型包括Undefined、Null、Boolean、String、Number、Object
javascript有七种内置类型:
空值(null)、未定义(undefined)、布尔值(boolean)、数字(number)、字符串(string)、对象(object)、符号(symbol),除对象外,其他统称“基本类型”。
Javascript按照存储类型来分是值类型和引用类型:值类型可以分块存在内存中,引用类型是好几个内存共用一个内存块,节省内存空间。
我们可以通过typeof运算符来查看值的类型,它返回的是类型的字符串值,但七种类型和他们的字符串值并不一一对应:
typeof undefined ===“undefined”
typeof true ==="boolean"
typeof 42 ==="number"
typeof "42" ==="string"
typeof {life:42} ==="object"
typeof Symbol() ==="symbol"
typeof null ==="object"
null是基本类型中唯一一个假值
typeof function a(){} === "function"
Array.prototype.slice.call(arguments)能将具有length属性的对象转为数组。
许多数组函数用来处理字符串很方便,虽然字符串没有这些函数,但是可以通过“借用”数组的非变更方法来处理字符串。
var c=Array.prototype.join.call(a,"-");
var d=Array.prototype.map.call(a,function(){
return v.toUpperCase()+"."
}).join("");
特殊数值
undefined类型只有一个值,即undefined,null类型也只有一个值,即null。
NaN是一个特殊值,它和自身不相等,是唯一一个非自反的值,可以通过isNaN来判断一个值是否是NaN。
ES6中新加入的Object.is(..)来判断两个值是否绝对相等。
值和引用
简单值总是通过值赋值的方式来赋值和传递,包括null、undefined、字符串、数字、布尔、symbol
复合值-对象和函数,通过引用复制的方式来赋值和传递。
slice不带参数会返回当前数组的一个浅复制。
原生函数
常用的原生函数
1.String()
2.Number()
3.Boolean()
4.Array()
5.Object()
6.Function()
7.RegExp()
8.Date()
9.Error()
10.Symbol()
原生函数可以被当做构造函数来使用:
var a=new String("abc");
typeof a;//object
a instanceof String;//true
Object.prototype.toString.call(a);//"[object String]"
如何理解JSON:JSON只是一个JS对象,跟math一样,存在于JS的基本语法中。
何时使用 === 、==
if(obj.a==null){
//这里相当于obj.a===null || obj.a===undefined
//这是jQuery源码中推荐的方法
}
//除了这个之外,其他全是===
如何判断一个变量会被当成true还是false
var a=100;
console.log(!!a);