JavaScript 运算符

(47) 2024-04-14 12:01:01

运算符

1.运算操作符

  • “+”
    • 数字运算、字符串链接
    • 任何数据类型加字符串都等于字符串
      例题: var a = “a”+1+1 //a11
      var a = 1+1+“a”+1+1 //2a11
      var a = 1+“a”+1+1 //1a11 (需要注意的是,不为1a2,因为是自左向右相加的)
  • “-”,“*”,“/”,“%”取余,“=”,“0”
    例题:几个特殊值:
    • 0/0=NaN
    • 1/0=Infinity
    • 算Number 数字类型
    • -1/0=-Infinity
  • “=”优先级最弱,“()”优先级较高
  • “++”,“- -”,“+=”,“/=”,“*=”,“%=”
    例题1:
var a = 10;
      Document.writea++); //10
    表示先执行语句,后加加(先打印a,再给a++,但此时语句已经结束,a没有打印出来)。 

例题2:

var a = 10;
      var b = ++a -1 + a++;
          document.write(b +" "+a);
//21

例题3:

var a = 1var b =a ++ +1;
document.write(a);
document.write(b);
//2 2
    因为式子里是a++(++在后面),所以先算整个式子,全部算完再给a++。

变形:

var a = 1var b = ++a +1;
document.write(a);
document.write(b);
//2 3

例题4:

var a = 1;
var b = a-- + --a;
document.writea);
document.write(b); //-1 0

观察整个式子,因为式子里有–a,所以首先算他(++a同理),–a=0,a=0,此时前面的a–中的a也变成了0,所以b的值为0,最后算a–,所以a的值为-1.

2.比较运算符

  • “>”,“<”,“==”是否等于,“>=”,“<=”,“!=”是否不等于
    比较结果为boolean

3.逻辑运算符

“&&”,“||”,“!”
运算结果为真实的值

“&&”(全真才为真)

运算规则:先看第一个表达式转换成布尔值得结果,如果结果为真(4中列出了所有为假的值),那么它会看第二个表达式转换为布尔值的结果,然后如果值有两个表达式的话,只要看到第二个表达时就可以返回该表达式的值了。

例题:

var a = 1 && 2 ;
document.writea);
结果:2
var a = 1 && 2 + 2;
document.writea);
结果:4
var a = 0 && 2 + 2;
document.writea);
结果:false
var a = 1 && 0  && 3;
document.writea);
结果:false,从左向右依次判断,当值为0时返回0再转换成布尔值,则为false
var a = 1 + 1 && 1 - 1;
document.writea);
结果:0

“||”或(全假才为假)

运算规则:先看第一个是否为真,若为真,则不再往下看了,返回这个数的布尔值,若不为真,则继续自左向右,直到找到真的为止。

 例题:var a = 1 || 2 ;
document.writea);
结果:1
例题:var a = 0 || 3 ;
document.writea);
结果:3
例题:var a = 0 || 0 ;
document.writea);
结果:false

“!” 非

4.被认定为false的值(五个)

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

5.字符串比较时先同时比较第一个

例题: var a = “10”>“8”;
document.write(a);
结果:false

因为先比较第一个字母,1和8的ascll码。

利用语言来解决问题:
例题1:计算2的n次幂,n可输入,n为自然数。

<script type=”text/javascript”> var n = perseInt(window.prompt(‘input’)); var mul = 1; for(var i = 0; i<n ; i++){ mul *= 2; } document.write(mul); </script>

例题2:计算n的阶乘,n可输入。

<script type=”text/javascript”> var n = perseInt(window.prompt(‘input’)); var mul = 1; for(var i = 0; i<=n ; i++){ mul *= i; } document.write(mul); </script>

例题3:著名的斐波那契数列,输出第n项。

 <script type=”text/javascript”>
if(n>2){
var n = perseInt(window.prompt(‘input’));
var first = 1,
second = 1,
third;

for(var i = 0; i<n-2 ;  i++){
third = first+second;
first = second;
second=third;
}
document.write(third);
}
else{
Document.write(1);
} 
</script>
分析:// f   s   t
     //  1   1   2   3   5   8
     //      f   s   t
     依次顺位往后移

例题4:输入a,b,c三个数字,打印出最大的。

<script type=”text/javascript”>
var a = perseInt(window.prompt(‘input’));
var b = perseInt(window.prompt(‘input’));
var c = perseInt(window.prompt(‘input’));
if(a>b) {
        if(a>c) {
document.write(a); 
} else {
document.write(c);
}else{
if (b>c){
document.write(b);
} else {
    document.write(c);
}
}  
</script>

例题5:打印出100以内的质数。

<script type=”text/javascript”> var count = 0; for(var i = 1 ; i < 100 ; i++){ for(var j = 1 ; j <= i ; j++){ if(i % j == 0){ count ++; } } if(count == 2){ document.write(i+""); } count = 0; } </script>

优化:将从1到100改为从1到10,因为100=10*10,一个增大,另一个就得减小,所以如果除到10都没有数能把100整除的话,那10以上就更没有了。

优化代码:

<script type=”text/javascript”> var count = 0; for(var i = 2 ; i<100 ; i++){ for(var j = 1 ; j<=Math.sqrt(i) ; j++){ //开根号函数 if(i % j == 0){ count ++; } } if(count == 1){ document.write(i+””); } count = 0; } </script>

例题6:判断今天周几:

<script type=”text/javascript”>
var data = window.prompt(‘input’); 
switch(data){
case ”monday”:
console.log(‘working’);
break;
case “tuesday”:
console.log(‘working’);
break;
case ”wednesday”:
console.log(‘working’);
break;
case ”thursday”:
console.log(‘working’);
break;
case ”friday”:
console.log(‘working’);
break;
case ”saturday”:
console.log(‘ralaxing’);
break;
case ”sunday”:
console.log(‘ralaxing’);
break;
}
</script>

此时代码重复过多,我们可以利用switch函数特性来简化代码:

switch函数特性:当在case里面找到==data的关键字时,会一直向下执行,直到遇见break。   
<script type=”text/javascript”> var data = window.prompt(‘input’); switch(data){ case ”monday”; case “tuesday”; case ”wednesday”; case ”thursday”; case ”friday”; console.log(‘working’); break; case ”saturday”; case ”sunday”; console.log(‘ralaxing’); break; } </script>
THE END

发表回复