1,注释
//单行注释
/*
*多行注释
*/
以分号结尾。
3,变量
var message = "hi";
javascript变量是松散型,可以赋予任何类型的数据。
若变量
未被赋值,则默认值为undefined。
注意:省略var定义的变量将成为全局变量。
分类:五种简单类型Undefined,Null,Boolean,Number,String,一种复杂类型Object。
类型检测:
基本类型用typeof,上述数据类型将依次返回undefined,object,boolean,number,string;object。当被检测为函数名时,则返回function
引用类型用instanceof。
内存布局:
基本类型会将数值直接保存在栈内存,占固定大小,连续位置,查询速度快。
引用类型在栈内存中只保存一个指针,指针会指向堆内存,对象的属性和方法都以类似Map的格式保存在堆内存中。因此引用类型是可以动态添加属性和方法的。
1> Undefined:
只有一个值就是undefined。
对未声明和未初始化的变量,typeof都会返回undefined,以此表明,该变量不可操作。
推荐,所有变量在声明时都初始化值,当typeof返回undefined时,就明确知道该变量是未声明而不是未初始化。
2> Null:
只有一个值就是null。
使用typeof检测null会返回object。
推荐,如果一个变量准备保存引用型数据,那么最好初始化为null。这样通过typeof检测就知道该变量是否是一个引用型变量了。
注意,由于undefined派生自null,null == undefined返回true,但 null === undefined返回false。
3> Boolean:
有两个值true/false。
其他所有类型转Boolean:Boolean()。规则如下:
String的任何非空字符串都是true,空字符串是false;
Number的任何非零数值是true,0和NaN是false;
Object的任何对象是true,null是false;
Undefined的n/a是true,undefined是false。
注意,在其他类型被当做if条件判断时,则会自动调用Boolean()函数将其先转换为Boolean类型,
4> Number:
表示整数或小数。
其他所有类型转Number:Number()。
字符串转Number:parseInt(),parseFloat()。parseInt()可通过第二个参数指定数字的进制。
NaN:当计算出错(如整数除0)时不会报错,会返回NaN,好处是错误并不中止后续脚本运行。但由于对NaN的计算都会返回NaN,因此一但有一步返回了NaN,最终结果就会为NaN。
isNaN:判断NaN不能通过 == 操作符,因为NaN不等于任何值,包括它本身。JavaScript提供了isNaN()函数来判断。所有数据类型都可以被isNaN判断,因为在判断之前会调用Number()函数,先将其转换为数值再判断。
Infinity:如果计算结果超过了Number.MIN_VALUE或Number.MAX_VALUE,则返回-Infinity或Infinity。转换后不能继续后续计算,应对有可能超出范围的结果先用isFinite()函数检测后再计算。
5> String:
一组16位Unicode编码的字符的序列。
其他所有类型转String:String()。
除了null和undefined的所有类型转String:toString()。数值类型可添加参数作为进制。
6> Object:一组数据和功能的集合。是所有引用类型的父类。
属性:
contructor:构造函数。当对象是被new调用函数构造出来时,会被自动赋予该属性,指向构造函数,表明了类型。
方法:
toString()返回对象字符串表示。
valueOf()返回对象的字符串、数值或布尔值表示。
hasOwnProperty(propertyName)用于检测对象实例是否有该属性。
isPrototypeOf(object)用于检测自身是否是object的原型。
propertyIsEnumerable(propertyName)用于检测该属性能否使用for-in遍历。
5, 操作符
略
6, 逻辑语句
略
for in语句:迭代对象属性。
with语句:用于将代码作用域设置到一个对象中。
7, 函数
略