1.标识符:第一个字符必须是字母、下划线_、美元符号$
2.区分大小写
3.关键字和保留字:*表示第5版新增
关键字:break do instanceof typeof case else new var continue for switch while *debugger function this width default if throw delete in try
保留字:abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public *let *yield
4.变量
不加var就是声明全局变量
5.数据类型
基本数据类型:null undefined number string boolean
(1)null:默认为空对象,即该处不应该有值,用法:1.作为函数的参数,表示该函数的参数不是对象;2.作为对象原形链的终点
undefined:表示缺少值,即该处应该有一个值但是还没有定义,用法:1.变量被声明了,但是没有赋值的,就等于undefined;2.调用函数时,应该提供的参数没有提供,该参数就等于undefined
undefined是由null派生出来的,所以undefined==null为true
(2)NaN:非数值是一种特殊的数值,任何数除以0都会返回NaN;所有涉及NaN的操作都会返回NaN,但是NaN==NaN为false
isNaN判断值不是数值 :isNaN(true) //false(可以被转换成1);isNaN(NaN) //true;isNaN(10) //false;isNaN('10') //false
(3)Number():把非数值转为数值,true和false=>1,0 null=>0 undefined=>NaN ""=>0 "aaa"=>NaN
(4)toString():null和undefined没有这个方法 有String()方法返回自身,可传递参数toString(进制数)
(5)Object方法:hasOwnProperty(name) 属性在当前实例中是否存在;propertyIsEnumerable(name) 是否可以用for..in枚举;valueOf() 返回对象的字符串、数值或布尔值表示,通常与toString()返回值相同
(6) var result =5-true //4 var result =NaN -1 //NaN var result =5 -"" //5 var result =5 -"2" //3 var result =5 -null //5
复杂数据类型:object
6.操作符typeof
返回值类型:undefined boolean string number object(对象或者null) function
7.语句
如果迭代的对象为null或者undefined,for...in会抛出错误
8.Object
Object的每个实例都具有下列属性和方法
constructor:保存着用于创建当前对象的函数,构造函数(constructor)就是Object();
hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中作为参数的属性名(propertyName)必须以字符串形式指定(例如:obj.hasOwnProperty("name"));
isPrototypeof(object):用于检查传入的对象是否是传入对象的原型;
toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应;
toString():返回对象的字符串表示;
valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值相同。
9.运算符:&(与),|(或),~(非),^(按位异或),<<(有符号左移),>>(有符号右移)
!(逻辑非),&&(逻辑与),||(逻辑或)
10.减法:如果有一个操作数是对象,则调用对象的 valueOf()方法以取得表示该对象的数值。如果得到
的值是 NaN,则减法的结果就是 NaN。如果对象没有 valueOf()方法,则调用其 toString()
方法并将得到的字符串转换为数值
var result1 = 5 - true // 4,因为true被转换成了1;
var result2 = NaN - 1// NaN;
var result3 = 5 - 3// 2;
var result4 = 5 - ""// 5,因为"" 被转换成了 0;
var result5 = 5 - "2"// 3,因为"2"被转换成了 2;
var result6 = 5 - null// 5,因为null被转换成了0;
11.全等