颠覆认知的『JavaScript』篇——02 语法、规范、错误、运算符、判断分支、注释

一、规范

 js是以分号区分语句的,不写也可以,但是要规范,加了就习惯加上,不加就全都不加,有些可以不用加(if   switch   for   function)

//符号两边加空格
 var a = a + b 

二、错误

1. 语法错误

所有语句都不会执行

2. 通用错误

1.错误语句之前的语句会执行,之后的不会执行

2. 不同脚本块之间相互独立错误不会相互影响

三、运算符

1. 运算优先级

2. + 运算符

任何数据类型+字符串=字符串

var a = 1 + "str" // a = 1str 

3. *、/运算符

// *、/ 数学运算
var a = 5,
  	b = 2,
  	c,
    d;

d = a * b;      // 10
d = a * NaN     // NaN
d = a * 'str'   // NaN
c = a / b;      // 2.5
c = 0 / 0;      // NaN
c = 'a' / 'b';  // NaN
c = NaN / 5;    // NaN
c = NaN / NaN;  // NaN
c = 5 / NaN;    // NaN
c = 1 / 0;      // Infinity -> Number数据类型
c = -1 / 0;     // -Infinity -> Number数据类型

4. 交换两个数的方法

//交换a,b的值
var a = 1,
    b = 2;
var c = a;
var a = b;
var b = c;


//不加第三个变量
var a = a + b;
var b = a - b;
var a = a - b;


5. ++、--(自增、自减)

++ (--)将其操作数加1(减1)并返回—个值。

如使用后置自增((自减),操作符在操作数后x++(x--),操作数将在自增前返回。

如使用前置自增(自减),操作符在操作数后++X(--x),操作数将先自增后返回。

var a = 1;
console.log(a++); // 1
console.log(a);   // 2

var b = 2;
console.log(++b); // 3
console.log(b);   // 3

var c = 3;
console.log(c--); // 3
console.log(c);   // 2

var d = 4;
console.log(--d); // 3
console.log(d);   // 3

进阶练习

var a = 5,
  	b;

/**
 * 1. b = a + 1 
 * 2. a++ 				a -> 6
 */
b = a++ + 1;
console.log(b, a); // 6 6

//-------------------------------------------------------------------------------

/**
 * 1. ++a  				a -> 6
 * 2. b = a + 1;
 */
b = ++a + 1;
console.log(b, a);  // 7 6 

//--------------------------------------------------------------------------------

/**
 * 1. a-- 				a -> 5
 * 2. 5 + --a			a -> 4
 * 2. --a 				a -> 3
 * 3. b = 5 + 3
 */
b = a-- + --a;
console.log(b, a);  // 8 3

//------------------------------------------------------------------------------

/**
 * 1.--a					a -> 4
 * 2. 4 + --a			
 * 3. --a 				a -> 3
 * 4. b = 4 + 3
 */
b = --a + --a;
console.log(b, a); // 7 3

//-----------------------------------------------------------------------------

/**
 * 1.	--a					a -> 4
 * 2. 4 + a++		
 * 3. b = 4 + 4				
 * 4. a++					a -> 5
 */
b = --a + a++;
console.log(b, a); // 8 5

6. > < >= <=  ==   === !=  !==(比较运算符)

返回值为bool值

如果操作数都是数值,则执行数值比较。

如果操作数都是字符串,则逐个比较字符串中对应字符的编码。

如果有任—操作数是数值,则将另一个操作数转换为数值,执行数值比较。

如果有任一操作数是布尔值,则将其转换为数值再执行比较。

相等不看数据类型。全等需要数据类型相等

NaN与包括自己在内的任何东西都不相等

// 1. 两个操作数都是number类型
var bool = 1 > 10; 	  		// false		
var bool = 20 < 100;  	 	// true
var bool = 10 === 10;  		// true
var bool = 10 == 10;	   	// true

// 2. 两个操作数都是string类型
var bool = 'a' > 'b'; 		// false   a对应的ASCII码 < b对应的ASCII码
var bool = 'abc' > 'aac'; // true			按顺序逐个比较字符的ASCII码

// 3. 任一操作数是number类型
var bool = 1 == '1';    	// true  str -> Number(str)
var bool = 1 !== '1';  		// true   全等比较时,不转换操作数,值和数据类型都相同才返回true

// 4. 任一操作数是boolean类型
var bool = true > 0;     // true  boolean -> Number(true) -> 1
var bool = false == 0;	 // true 	boolean -> Number(false) -> 0
var bool = true > '12';  // false boolean -> Number(true) -> 1  str -> Number('12') -> 12

// NaN与包括自己在内任何东西都不相等
var bool = NaN == NaN; // false

四、判断分支

1. if  else

// 查询成绩等级
var score = 63;
if (score >= 90) {
  console.log('您的成绩等级为A');
}
if (score >= 80 && score < 90) {
  console.log('您的成绩等级为B');
}
if (score >= 70 && score < 80) {
  console.log('您的成绩等级为C');
}
if (score >= 60 && score < 70) {
  console.log('您的成绩等级为D');
}
if (score < 60) {
  console.log('您的成绩不及格');
}

if (score >= 90) {
  console.log('您的成绩等级为A');
} else if (score >= 80 && score < 90) {
  console.log('您的成绩等级为B');
} else if (score >= 70 && score < 80) {
  console.log('您的成绩等级为C');
} else if (score >= 60 && score < 70) {
  console.log('您的成绩等级为D');
} else if (score >=0 && score < 60) {
  console.log('您的成绩不及格');
} else {
  console.log('您的成绩出现异常');
}

2. switch条件语句

var city = window.prompt('请输入您所在的地区');

switch (city) {
  case '北京':
    console.log('15K');
    break; // 中止当前循环
  case '上海':
    console.log('13K');
    break;
  case '深圳':
    console.log('12K');
    break;
  case '广州':
    console.log('11K');
    break;
  default:
    console.log('9K');
}

switch (true) {
  case score >= 90 && score <= 100:
    console.log('您的成绩等级为A');
    break;
  case score >= 80 && score < 90:
    console.log('您的成绩等级为B');
    break;
  case score >= 70 && score < 80:
    console.log('您的成绩等级为C');
    break;
  case score >= 60 && score < 70:
    console.log('您的成绩等级为D');
    break;
  case score >= 0 && score < 60:
    console.log('您的成绩不及格');
    break;
  default:
    console.log('您的成绩出现异常');
}

五、&& || !逻辑运算

undefind、null、NaN、""、0、false 都是假,其余的都为真

1. &&

遇到真就往后走,遇到假就返回当前的值

  • 1 && 1 :1  真

    1 && 0 :0  假

    0 && 1 :0  假

    0 && 0 :0  假

true && 1;  				// 1
'123' && false; 		// false
undefined && 'str'; // undefined
'str' && NaN; 			// NaN
'' && null; 				// ''
0 && 5; 						// 0

2. ||

遇到假就往后走,遇到真就返回当前的值

  • 1 && 1 :1  真

    1 && 0 :1  真

    0 && 1 :1  真

    0 && 0 :0  假

true || 1;  				// true
'123' || false; 		// '123'
undefined || 'str'; // 'str'
'str' || NaN; 			// 'str'
'' || null; 				// null
0 || 5; 						// 5

3. !

取反

var a = !1; //true

六、注释

1.单行注释

//单行注释

2. 块注释

/* 这是第一行
 * 中间的每一行最好加上*,这样更加规范,看起来也更加舒服
 *
 */

七、小练习

输入一个星期一至星期日任意一天,然后选择上午下午,打印出那个时段的计划,比如说我星期一下午去喝茶了,然后就打印出来

第一种方法

  var day = window.prompt('请填写星期几');
        var time = window.prompt('选择上午或下午');
        if(time = '上午'){
            switch(day){
                case '星期一':
                    console.log('去喝茶');
                    break;
                case '星期二':
                    console.log('去喝茶');
                    break;
                case '星期三':
                    console.log('去喝茶');
                    break;
                case '星期四':
                    console.log('去喝茶');
                    break;
                case '星期五':
                    console.log('去喝茶');
                    break;
                case '星期六':
                    console.log('去喝茶');
                    break;
                case '星期天':
                    console.log('去喝茶');
                    break;
                default:
                    console.log("请输入星期一至星期日");
            }
        }
        else if(time = '下午'){
            switch(day){
                case '星期一':
                    console.log('去喝茶');
                    break;
                case '星期二':
                    console.log('去喝茶');
                    break;
                case '星期三':
                    console.log('去喝茶');
                    break;
                case '星期四':
                    console.log('去喝茶');
                    break;
                case '星期五':
                    console.log('去喝茶');
                    break;
                case '星期六':
                    console.log('去喝茶');
                    break;
                case '星期天':
                    console.log('去喝茶');
                    break;
                default:
                    console.log("请输入星期一至星期日");
            }

        }

第二种

var day = window.prompt('请填写星期几');
var time = window.prompt('选择上午或下午');
var days = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'];
var times = ['上午', '下午'];
var plans = ['计划1', '计划2', '计划3', '计划4',
  '计划5', '计划6', '计划7', '计划8',
  '计划9', '计划10', '计划11', '计划12',
  '计划13', '计划14'];
switch (day) {
  case days[0]:
    if (time == times[0]) {
      console.log(days[0] + times[0] + plans[0]);
    } else if (time == times[1]) {
      console.log(days[0] + times[1] + plans[1]);
    } else {
      console.log('输入格式错误');
    }
    break;
  case days[1]:
    if (time == times[0]) {
      console.log(days[1] + times[0] + plans[2]);
    } else if (time == times[1]) {
      console.log(days[1] + times[1] + plans[3]);
    } else {
      console.log('输入格式错误');
    }
    break;
  case days[2]:
    if (time == times[0]) {
      console.log(days[2] + times[0] + plans[4]);
    } else if (time == times[1]) {
      console.log(days[2] + times[1] + plans[5]);
    } else {
      console.log('输入格式错误');
    }
    break;
  case days[3]:
    if (time == times[0]) {
      console.log(days[3] + times[0] + plans[6]);
    } else if (time == times[1]) {
      console.log(days[3] + times[1] + plans[7]);
    } else {
      console.log('输入格式错误');
    }
    break;
  case days[4]:
    if (time == times[0]) {
      console.log(days[4] + times[0] + plans[8]);
    } else if (time == times[1]) {
      console.log(days[4] + times[1] + plans[9]);
    } else {
      console.log('输入格式错误');
    }
    break;
  case days[5]:
    if (time == times[0]) {
      console.log(days[5] + times[0] + plans[10]);
    } else if (time == times[1]) {
      console.log(days[5] + times[1] + plans[11]);
    } else {
      console.log('输入格式错误');
    }
    break;
  case days[6]:
    if (time == times[0]) {
      console.log(days[6] + times[0] + plans[12]);
    } else if (time == times[1]) {
      console.log(days[6] + times[1] + plans[13]);
    } else {
      console.log('输入格式错误');
    }
    break;
  default:
    console.log('输入格式错误');
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值