javascript 第七天---运算符

运算符

+ - / % **

  1. 在加号 任意一侧 出现了字符串的时候 是字符串拼接
  2. % 是取余数 var a =7;a =a%2 console.log(a);结果是1,即7除2的余数
  3. ** 平方

赋值运算

= += -= *= /= %= **=

  1. var a = 7;a+=7代表意思是 a=a+7 算数运算不存在分数
<body>
  <div id="box">
    <p class="on"></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
  </div>
</body>
<script>
  var op = document.getElementsByTagName("p");
  var index = 0;
  document.onclick = function () {
      op[index].className = "";
      index++;
      <!--if(index>op.length-1){-->
      <!--   index = 0;-->
      <!--}-->
      index = index%op.length;//取余数  代替了if判断
      op[index].className = "on";
  }
</script>

1%5 = 1 ; 上面代码为了实现点击后,p的背景颜色发生改变,用了判断

比较运算

> < == != >= <= === !==
var a =10; b="6"; console.log(a>b);结果是true,

  1. < == 数值和“数字”做比较 有一个类型转换

  2. var a ="10"; b="6"; console.log(a>b); 结果是false;如果说 字符串做比较 按照ASCII码表顺序挨个作对比

逻辑运算符

&& 且 || 或 ! 非

两侧都是布尔值的情况

  1. && 两侧都是true 返回true
  2. // 两边都是假 返回假 其他情况返回真
var a =1>2||3>2&&2>1;
console.log(a);//结果是true
  1. && 运算顺序优先级高于||

两侧不是布尔值

  1. && 遇到假就停止 并返回当前值 到头之后返回最后一个值
  2. || 遇到真就停止并返回当前值 到头之后返回最后一个值
  3. ! 取到的是布尔值
  4. 我们在控制流程的时候 通常会用到 逻辑运算的短路特性
var a = 5&&0&&6;
console.log(a);

结果是0,因为0是假

var a=5&&document.getelementsbytagname("p")&&6;
console.log(a);

结果是6,document.getelementsbytagname("p")虽然没找到 但是返回值是一个空的类数组 是真的

var a=5&&document.getelementbyid("box")&&6;
console.log(a);

结果是是null document.getelementbyid("box")返回值是null

var b=0||4||5;
console.log(b);

结果是0

var b=1||2&&5;
console.log(b);

结果是1,先运算 && 结果是5,再||结果是1

var b=""||2&&0;
console.log(b);

结果是0,先&& 结果是0,再||,都是假 为0

var c="hahah";
c!=c
console.log(c);

结果是false

var n=6;
3>n&&fn();
function fn(){
    console.log(123);
}

函数不会执行,

显示类型转换 平时只做字符串---数值转换

  1. number(); 不会改变原有数据类型 而是把转换之后的结果 返回出来
<script>
    var a ="123";
    var b = number(a);
    console.log(a);
    console.lod(b);
</script>

第一个结果是“123” 第二个是123

var a="123b";
var b=number(a);
console.log(b);
console.log(typeof b);

第一个结果是NaN,另一个是number

  1. 数值 并不是所有类型的数据就是数 还有一个不是数 是NaN
console.log(NaN===NaN);

结果是false

var a =NaN;
console.log(a===a);

结果是false,即便是它自己也不等于自己

var a=true;
var b=number(a);
console.log(b);

结果是1 通电断电 1 0 高级语言:机器不能直接看懂 false会变成0

var a=[];
var b=number(a);
console.log(b);

结果是0 空数组被解释为0 如果按照数学逻辑是正确的数 那么会转换成数 数组中有多个值 被解释为nan

var a=["123"];
var b=Number(a);
console.log(b);

结果是123

var a=["123" "1345"];
var b=Number(a);
console.log(b);

结果是NaN

var a=null;
var b=Number(a);
console.log(b);

结果是0

其他显示类型转换

  1. String();和alert()表现一致 所有数据类型都能转变成字符串
  2. Boolean();
var a="";
var b=!!a;//var b =boolean(a);效果一样
console.log(b);

结果是false 如何判断数据类型为NaN

var a =123;
console.log(isNaN(a));
  1. isNaN 返回布尔值, true 就是NaN

parseInt parseFloat 用于把宽高带px解释为数字 toFixed(2) 保留几位小数 会四舍五入

parseInt 分析 整数 ;parseFloat小数数
强制类型转换 会从空格之后开始 左往右进行解释 直到遇到不符合数学逻辑的字符为止 解释为字符串,如果空格在中间会被认为是字符串

var a ="00100";
console.log(parseInt(a));

结果是100

var a ="00.100";
console.log(parseInt(a));

结果是0

var a ="100px";
console.log(parseInt(a));

结果是100

var a ="100px";
console.log(number(a));
console.log(parseInt(a));

第一个结果是NaN,第二个结果是100

var a ="4/8";
console.log(parseInt(a));

结果是4 遇到/会停止

var a ="- 4/8";
console.log(parseInt(a));

结果是NaN -是啥?不是数

var a =2.2222221355666;
console.log(a);

结果不会全部打印出来,小数被转换成二进制之后 可能无限循环 损失精度 不要用小数做判断

var a ="[]";
console.log(parseInt(a));

结果是nan parseInt会把空数组解释为NaN

var a ="["123"]";
console.log(parseInt(a));

结果是123

var a ="["123","12355"]";
console.log(parseInt(a));

结果是123 数组中有多个值 只解释第一个值

var a =2.2222221355666;
console.log(a.tofixed(2);代表取小数点后两位  **数值类型变为字符串,会四舍五入**

隐式类型转换

  1. 其他类型转字符串 +”“
var a =null;
a = a+"";
console.log(a);

结果是null

  1. 其他类型转数值 用*1 /1 null是0 undefined是nan
var a ="123";
a = a*1;
console.log(a);
var a =undefined;
a = a/1;
console.log(a);

结果是NaN

  1. 其他类型转布尔 !!
var a="";
var b=!!a;//var b =boolean(a);效果一样
console.log(b);
var a =undefined;
a = a++;//a=a+1;
console.log(a);

结果是NaN

  1. a++ 和 a=a+1不一样 a++会有类型转化
var a ="123";
a = a++;//a=a+1;
console.log(a);

第一种情况是124 第二种是1231

猜你喜欢

转载自blog.csdn.net/lxhby520/article/details/80322359