一、<script>标签放在<body>底部,先显示页面可加快加载速度。
二、var 定义局部变量,省略则定义全局变量,可是不推荐。
可一次定义多变量(,号分隔) var message = "h1", found = false, age = 20;
三、数据类型:
5种基本数据类型 : undefined,Null,Boolean,Number,String;
1种复杂数据类型 : Object;
使用 typeof 可检测变量的数据类型
例 : Alert( typeof(message) ) // "String";
typeof 为操做符不是函数,因此能够省略 ()
typepf null // Object;
四、Undefined : 定义但未赋初值。
var message;
alert(message); // undefined
alert(age); // error
五、NUll类型: 一个空对象指针
alert(null == undefiend) // true
六、Boolean类型.
true不必定等于1,false也不必定等于0.
大小写敏感。
可对任何变量使用转型函数 Boolean。
转换规则:express
if语句自动转换:
var message = "hello";
if(message) { //转为true
alert ( "value id true");
}
七、Number 类型:数组
* 浮点数值 var float Num3 = .1 // 有效,但不推荐 * e 表示指数幂 3.125 e7 ; // 等于 3125000 : 3.125 * 10的7次幂 最高精度是17位小数,计算精度不如整数。 例 : 0.1 + 0.2 ≠ 0.3 而是 等于 0.3000000……4。 if (a+b == 0.3) { } // 永远不要用float作测试 * NaN : 即非数值,是一个特殊的数值
任何数除以非数值都返回NaN,所以不影响其余代码执行。
NaN 的两个特色 :浏览器
NaN与任何值都不相等,包括自己。alet(NaN == NaN) ; //falseisNaN() ; 判断是否“不是数值”。函数
对于任何类型可用第一个,后两个用于字符串;
Number()转换字符串复杂且不合理,处理整数用parseInt();处理浮点数用parserFloat();
例 : parseInt(“1234blue”); // 1234八、String 类型性能
* 字符字面量
/n : 换行 /t 制表 /r 回车测试
* 特色
不可变,只能销毁重建。编码
* 转为字符串
tostring() : null 和 undefined 没有此方法,要用String()方法;
简便转换方法 : 值与字符串相加 (“ ”)。
注意 : 0.9 - "0.4" = 0.5 // 隐式类型转换;
1 + “2” = "12";
九、Object 类型 : 一组数据和功能的组合
Object 类型是全部它的实例的基础,所具备的任何属性和方法一样存在更具体的对象中。每一个实例都具备如下属性和方法 :spa
* constructor() : 构造函数,保存着用于创造当前对象的函数; * hasOwnProperty( property ) : 检查给定属性在当前对象实例中(不是在原型中) 是否存在; * isPropertyOf(object) : 对象是不是当前对象原型; * toLocalString() : 返回对象的字符串表示,与地区对应; * toString() : 返回对象的字符串表示; * valueof() : 返回对象的字符串、数值、布尔值表示,一般与tostring()同样。
十、操做符 包括算数操做符(加号、减号等),位操做符,关系操做符和相等操做符。指针
* 一元操做符
++i : i = i + 1; // 先自加再赋值code
* 一元加减
该操做符对非数值应用时,会像Number()转型函数同样对值进行转换。
对对象先调用valueof和tostring方法。
可用于基本算数运算,也能够用于转换数据类型。
* 位操做符
整数的补码为自己,负数的补码为取反加一;
按位 非 (NOT) : ~ 表示,反码;
按位 与 (AND) : & 表示,同为1得1,其余为0;
按位 或 (OR) : | 表示,同为0得0,其余为1;
按位 异或 (XOR) : ^ 表示,同为0,异为1;
左移 : << 以0补位,32位;
有符号右移 : >> 保留符号位 0 : 正 1 : 负;
无符号右移 >>> 负数以绝对值二进制补码表示;
* 布尔操做符 : 非(NOT) 与(AND) 或(OR)
逻辑非(!) :
可用于任何值,不管类型都返回布尔值,先转为布尔值,再求反;
逻辑与(&) :
同真为真,其余为假;
短路操做:第一个能决定结果,后边就不用求值,如第一个为false,结果直接为false;
逻辑或(||) :同假为假,其余为真有一个操做符不是布尔值,结果不必定返回布尔值;
与逻辑与同样,短路运算;
可用短路逻辑为变量赋值避免赋null和undefined。如 : var result = (A || B) // 当A不为null,赋值A,不然为B;
* 乘性操做符
乘法 : (*)除法 : (/)求模 : (%) // 余数
* 加性操做符
5 + 5 = 10 5 + "5" = "55" "str" + 5 + 5 = "str55" "str" + (5 + 5) = "str10"
* 减性操做符 : 先进行隐式类型转换(Number()): 注意转换规则对number类型友好优先
5 - "2" = 3 5 - true = 4 5 - "" = 5 NaN - 1 = NaN
* 关系操做符 : > < >= <=
比较字符串时比较的事字符编码值,例 : a 为 97 , B 为 66“B” < "a" // true "23" < 3 // true
* 相等操做符 : == != === !==
相等和不相等 ---- 先转换再比较全等和不全等 ---- 比较但不转换,比较数据类型
* 条件操做符(三目运算符)
A ? b : c // A为真时值为b,不然为c
* 赋值操做符 : =
= 右边的值赋给左边变量赋值复合操做符 : *= /= %= += -= <<= >>= >>>=
* 逗号操做符
一条语句执行多个操做 : var num1 = 1 , num2 = 2,num3= 3;用于赋值时,老是返回表达式最后一个值 : var num = (5,1,4,8,0) //返回0十一、语句
* if语句 : 先用Boolean转换
推荐使用代码块 : { }
* do - while 语句 : 后测试循环语句,循环内代码至少执行一次
let i = 0;do {i +=2} while
* while语句 : 前测试循环语句,有可能不会被执行
var i = 0;while(i<10){i += 2;}
* for语句 : var定义的变量会污染全局,以后尽可能使用let * var count = 10;
for(var i = 0;i < count;i++){alert(i);}alert(i); //10
* for-in语句 :
一种精准的迭代语句,可用来枚举对象属性,例 : for(property in expression) {} 返回的属性无序,因浏览器而异;
* label语句
可在代码中加标签,以便未来使用 ;
* break 和 continue :
break直接跳出循环,continue跳到下一次循环;
* with语句 :
将代码的做用域设置到一个特定对象中。语法 : with(expression){ } : 此语法会致使性能降低,不建议使用。
* switch语句 :
switch(expression){ case value : statement break; default : statement}十二、函数function functionName(org1,org2...){statements}
* 调用 : functionName();
可加return设置返回值;执行return后中止并当即退出,位于return后的代码永远不会执行。
* 理解参数
不介意传递的参数的种类和个数,因内部用数组来表示,函数体内能够用arguments对象来访问参数数组。命名参数只是提供便利,不是必须的,可在内部判断参数的长度完成重载。全部传递都是值的传递,没有值的自动赋予undefined值。
* 没有重载
重载:函数名相同,参数的数量和类型不一样。es中定义两个同名函数,后者会覆盖前者,经过检查传入参数的种类和数量能够模仿重载。