js语句与分号

  1. // 语句无需分号,表达式有时候要加
  2. function foo(){
  3. } // 无需分号
  4. if(1){
  5. } // 无需分号

关于要不要分号

  1. 早期es3规范建议要加建议,但es6去除了该建议。
  2. 不加分号的话大多数情况下没问题的,但是有些立即执行函数上面会报错 ```javascript 1 (function(){})();// 报错

// 正确写法 ;(function(){})(); void function(){}(); // 现在前端基本都是打包, // 以前这种自己写模块化的方法报错的情况就很少见了 // es6有原生模块机制

<a name="DqrmZ"></a>
## 
<a name="fThGQ"></a>
## js表达式
```javascript
var a = 1,
    b = 2;
c = a + b; //  注意空格,不要 a+b;

js错误

大体分成语法错误与其他通用错误

`console.log(11);
我 // 报语法错误,整个程序不会被执行
console.log(22);
console.log(11);
1.a(); // typeerror,这行之前可以运行

script代码块的语法错误

script与script之前相互不影响,第一个script有语法错误也不影响第二个script

运算符

var aNum = 1;
var bNum = 2;
var cNum = (aNum + bNum) * 3;
// 括号运算优先级最大,赋值语句优先级最低。

+号运算符

var c = 1 + 1;  //2
var d = 'str' + true; // strtrue
var e = 'str' + NaN; // strNaN
//任意数据类型的值 + 字符串都是字符串

/ 运算符

c = 5/2; // 2.5
c = 0/0; // NaN(Not a number,number类型)
c = "a"/"b"; // NaN
c = 1 / NaN; // NaN
c = 1 / 0;   // Infinity

% 取余

2 % 6;// 2

两个值交互

var a = 1,
    b = 2;
// 交换1
var c = a;
a = b;
b = a;
// 交换2
a = a + b;
b = a - b;
a = a - b;

自增,自减

// 前加加先运算
var a = 1;
var b = a++; // 1
a; // 2

var a = 1;
var b = ++a; // 2
a; // 2


var a = 4;
var b = --a + a--;
b; // 6
a; // 2

比较运算符

< <= >= == === != !==

1 > "2";     // false 字符串先转为数字
"a" > "b"    // false,获取ascii
"1.5" > "11" // true,字符串从左到右比较ascii

==

1 == "1"; // true 比较数据类型,有个转化过程
1 === "1";// false 比较数据类型
NaN == NaN; // false NaN与自己都不相等

逻辑判断

if

var score = 74;
if (score>=90){

}
if (score >= 70 && score < 90){

}else{

}
// 条件互斥的不可以分开写

switch

var age = 18;
switch(age){
  case 8:
    console.log("8");
    break;
  case 10:
  case 12:
    console.log("10, 12");
    break;
  default:
    console.log("not 8 , 10, 12");
    break;
}
// switch 有case穿透,注意添加break;

逻辑运算

假的情况

undefined,null,NaN,“”,0,false

|| &&

1 && 2; // 2;
1 || 2; // 1;

// && 遇到真就走,遇到假或者走到最后就返回。
// && 语句只要有一个条件是假的,整体返回假的。
// || 遇到假就往后走,遇到真或者走到最后就返回。
// || 语句只要有一个条件是真的,整体返回真的。

function foo(name){
  name = name || "default";
}
foo(undefined);
foo("liquan");


element.onclick = function(e){
  var event = e || window.event;
}

!

var a = !!1; // true;

注释

// 单行注释
/*
块注释
*/
function foo(num/* 参数一 */){

}