变量

  • javascript的变量名区分大小写,A和a是两个不同的变量
  • 声明变量而没有赋值,则该变量为**undefined**

    1. var arr;
    2. console.log(arr);
    3. //undefined
  • 没有声明就直接使用变量,javascript会报引用错误

    1. console.log(x);//ReferenceError: x is not defined
  • 同一条var中可声明多个变量

  • 所有变量的声明语句,都会被提升到代码的头部,包括函数,这叫做变量提升
    a的声明提到了前面,所以代码不会报错,赋值却托在了后面,所以是输出了为赋值的变量
    1. console.log(a);
    2. var a=1;
    3. //undefined
    4. 以上代码等同于
    5. var a;
    6. console.log(a);
    7. a=1;

标识符

  • 第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)
  • 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9
  • 中文是合法的标识符 var 变量 = 1
  • javascript有一些保留字,不能用作标识符

    arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield

语句基本规则

  • 语句后面要用分号结束“;”但 function test(){},for(){},if(){}后面都不用加分号
  • js 语法错误会引发后续代码终止,但不会影响其它 js 代码块
  • 书写格式要规范,“= + / -”两边都应该有空格

条件语句

if

if后面的表达式之中,不要混淆赋值表达式(=)和相等运算符(==)

  1. var x = 1;
  2. var y = 2;
  3. if(x=y){
  4. console.log(x);
  5. }
  6. //2

if不加上括号,只能包括下面第一行代码

  1. var a = 11
  2. if(a < 10)
  3. console.log('a是一位数')
  4. console.log('a是小于 10 的数')
  5. //a是小于 10 的数

并没有进行bool运算,而是把y的值赋给了x,代码不会报错,所以很容造成疏忽,很多开发者喜欢将常量写在运算符左边,这样一旦写错等号就会报错_if (2 = x) { // 报错_

switch

switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符,这意味着比较时不会发生类型转换

  1. var a = 1;
  2. switch(a){
  3. case true:
  4. console.log(1);
  5. break;
  6. default:
  7. console.log(0);
  8. }
  9. //0

三元运算符

应用

  1. var myVar;
  2. var arr = myVar ? '1':'0';
  3. console.log(arr);
  4. //0
  1. var msg = '数字' + n + '是' + (n % 2 === 0 ? '偶数' : '奇数');

循环语句

while

例子

  1. var i=0;
  2. while(i<100){
  3. console.log(i);
  4. i++;
  5. }
  6. while (true) {
  7. console.log('Hello, world');
  8. }//死循环

for

所有for循环,都可以改写成while循环

  1. for(var i=0;i<100;i++){
  2. console.log(i);
  3. }

do while

无论如何都会执行一次

  1. var i=0;
  2. do{
  3. console.log(i);
  4. i++;
  5. }while(i<0)
  6. //0

break 和 continue

break退出代码块或者循环

  1. for(var i=0;i<10;i++){
  2. console.log(i);
  3. if(i===5)
  4. break;
  5. }
  6. //0,1,2,3,4,5

continue终止本次循坏,开始下一个循环

  1. for(var i=0;i<10;i++){
  2. if(i===5)
  3. continue;
  4. console.log(i);
  5. }
  6. //0,1,2,3,4,6,7,8,9

label

标签用于定位语句,便于break,continue指定位置

  1. top:
  2. for(var i=0;i<3;i++){
  3. for(var j=0;j<3;j++){
  4. if(i===1 && j===1)
  5. break top;
  6. console.log(i,j);
  7. }
  8. }
  9. //0 0
  10. //0 1
  11. //0 2
  12. //1 0
  1. top:
  2. for(var i=0;i<3;i++){
  3. for(var j=0;j<3;j++){
  4. if(i===1 && j===1)
  5. continue top;
  6. console.log(i,j);
  7. }
  8. }
  9. //0 0
  10. //0 1
  11. //0 2
  12. //1 0
  13. //2 0
  14. //2 1
  15. //2 2