第四章 javaScript运算符

目录:

一、自增、自减运算符

二、布尔操作符(!、&&、||)

三、乘性操作符(乘法、除法、取模)

四、加法

五、关系操作符

一、自增、自减运算符:

++/--在前,则先运算再后续工作。在后则先后续工作再运算。比如:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>第三章 运算符</title>
</head>
<body>
<h1>javaScript运算符</h1>
<script>
var a =3;
alert(a++);   //3  先alert之后再自增。
alert(a);     //4
</script>
</body>
</html>

一些特性:当操作对象不是有效数字时,javaScript会自动转换操作对象的类型。

  • 如果是字符串,并且是由有效的数字字符组成的,那么转换为数值,如果不是有效的数字字符,则转换为NaN,空字符串转换为0.
  • false转换为0,true转换为1。
  • 操作对象是Object类型时,调用valueOf()方法,如果返回NaN继续调用toString()方法,然后再按照上边的规则继续转换。

    <script>
    var a = true;
    var b = false;
    var c = "18.3";
    var d = "18d2.4";
    var e = new Object();
    var f = "";
    alert(++a);     //2,true转换为1后自增
    alert(++b);     //1,false转换为0后自增
    alert(++c);     //19.3,字符串含有有效的数字字符,转换为数值型自增
    alert(++d);        //NaN,字符串不含有有效的数字字符,转换为NaN
    alert(++e);     //Nan,调用e的valueOf()方法,然后返回NaN,继续调用toString()方法,还是NaN,无效数字字符串
    alert(++f);     //1,空字符串转换为0,然后自增
    </script>

二、布尔操作符(!、&&、||):

!:逻辑非操作符:它会首先将操作数转换为布尔值,然后取反,遵循以下规则:

  • 操作数是对象:返回false。
  • 操作数是空字符串,返回true。
  • 操作数是非空字符串,返回false。
  • 操作数是数值0,返回true。
  • 操作数是任意非0数值(包括Infinity),返回false。
  • 操作数是null,NaN,undefined,返回true。

!!:两次逻辑非操作相当于执行Boolean()函数。

&&:逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true了。

逻辑与操作可以用于任何类型的操作数,而不仅仅是布尔值,它遵循以下规则:

  • 如果第一个操作数是对象,则返回第二个操作数。
  • 如果第二个操作数是对象,则只有第一个操作数的求职结果为true的情况下才会返回该对象。
  • 如果两个操作数都是对象,则返回第二个操作数。
  • 如果有一个操作数是null,则返回null(除false操作数外)。
  • 如果有一个操作数是NaN,则返回NaN(除false操作数外)。
  • 如果有一个操作数是undefined,则返回undefined(除false操作数外)。
<script>
var a = true;
var b = false;
var c = "18.3";
var d = "18d2.4";
var e = new Object();
var f = new Object();
var x=null;

alert(b && c);  //false,因为b就是false,所以永远不会是true。
alert(a && e); //Object,因为a为true,并且第二个操作数是对象,则返回对象。
alert(e && b);  //false,因为e是对象,所以返回第二个操作数false
alert(e && a);  //true,因为e是对象,所以返回第二个操作数true
alert(e && f);  //Object,因为都是对象,所以返回第二个f。
alert(a && x);  //undefined,因为x是undefined,并且a为true,如果a为false,则整个表达式是false,不是undefined。
// ---------------------------
alert(a && (++c));  //++c运算了,返回结果是19.3,首先a为true,然后++c是19.3,但是19.3变成了一个Object,所以返回了Object
alert(c);  //19.3,可以看到++c运行了。
c = 0;
alert(b && (++c));  //++c运算了,返回结果是false,因为b是false,所以++c根本不计算了
alert(c);  //0
</script>

||:逻辑或与逻辑与差不多,也是短路操作符,如果第一个操作结果是true,就不会对第二个操作数进行计算,并且遵循以下结果:

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个操作数的求值结果为false,则返回第二个操作数。
  • 如果两个操作数都是对象,则返回第一个操作数。
  • 如果两个操作数都是null、NaN、undefined,则返回null、NaN、undefined。

由于||是短路操作符,所以可以利用这一特性为变量赋值提供后备操作。比如:

var my = var1 || var2,这样,var1优先赋值给my,如果var1没有有效值,则var2会赋值给my。

三、乘性操作符(乘法、除法、取模):

如果某个操作数不是数值型,javaScript会在后台调用Number()函数进行转换,然后进行计算。true转为1,false转为0,空字符串转为0。

<script>
var a ="";
var b = 3;
var c = NaN;
var d = undefined;
var e = true;
var f = false;

alert(a*b);     //0,因为空字符串会转为0
alert(e*b);    //3,true转换为1
alert(f*b);  //0,true转换为0
</script>

四、加法:

  • 如果操作数有一个是字符串,则如下规则:
  • 如果两个都是字符串,则把两个字符串连接起来。
  • 如果有一个是字符串,则将另一个操作数转换为字符串,然后再连接起来。
  • 如果有一个是对象、数值或者布尔值,则调用他们的toString()方法,然后按照上边的规则执行。undefined和null只只会取得本身的字符,即“undefined”、"null"。
<script>
var a="abc";
var b = 123;
var c = undefined;
var d = null;
var e ="123";
alert(a+b);         //abc123
alert(a+c);        //abcundefined
alert(a+d);     //abcnull
alert(b+e);   //123123
</script>

也就是如果字符串类型要进行数值类型的相加,必须要转换为数值类型后才可以!

五、关系操作符:

关系操作符:

  • 在进行字符串比较时,比较的是两个字符串中对应位置的每个字符的字符编码值,也就是在ascii编码里的顺序值,而不是按字母表的顺序返回比较。
  • undefined和null是相等的。
  • 如果两个操作数都是对象,如果都指向同一个对象则返回true,否则返回false。
  • NaN和NaN不相等。
  • 如果一个操作数是数值另一个是字符串,则把字符串转换为数值进行比较。
  • 如果操作数是对象,则调用valueOf()方法,如果没有则调用toString()方法,再按照上边的顺序进行计算。
<script>
var a="123";
var b = 123;
var c = "456";

alert(a==b);  //true,a转换后相等
alert(a<c);  //true,按照字母表“1”==49,“4”==52,所以是4大
</script>
时间: 2024-10-12 11:41:00

第四章 javaScript运算符的相关文章

第5章—JavaScript运算符

5.1运算符类型:①算术运算符②赋值运算符③比较运算符④逻辑运算符⑤位运算符⑥特殊运算符 5.2算术运算符:+,-,*,/,%,++,--,+(一元加),-(一元减) 5.2.1(+):①强制类型转换(低精度向高精度)②数字+数字+字符串(先相加后连接)③字符串+字符串=字符串④如果一个操作数是特殊值NaN(非数字),另一个是数字,则结果为NaN 5.2.2(-):①如果其中一个操作数是NaN,结果将是NaN②如果其中一个操作数为非数字类型(如字符串.布尔等等),那么JavaScript将尝试把

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

JavaScript高级程序设计:第十四章

第十四章 一.表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在javascript中,表单对应的则是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而与其他HTML元素具有相同的默认属性.不过,HTMLFormElement也有它自己下列独有的属性和方法. 取得<form>元素的引用方式有好几种.其中最常见的方式就是将它看成与其他元素一样,并为其添加id特性,然后再像下面这样使用getElementById()方

javascript第四章总结

变量: javascript变量可以用来保存两种类型的值:基本类型和引用类型. 基本类型包括:Undefined,Null,Boolean,Number(用于所有的数值包括整数和浮点型) 和String. 这两者的特点是: 1.基本类型值在内存中占用固定大小的空间,一次被保存到栈的内存中: 2.从一个变量向里一个变量复制基本类型的值,会创建这个值的副本: 3.引用类型的值是对象,保存在堆得内存中: 4.包含引用类型的值得变量的实际上并不包含对象本身,而是一个指向该对象的指针: 5.从一个变量向另

《Flash ActionScript 3 殿堂之路》二,三,四章 运算符,语句,函数

1. 运算符相关 1 var a:int = 5; 2 var b:uint = 5; 3 trace(a === b);//输出true.全等运算符对于数值类型一视同仁, 4 //如果int,uint和Number类型数值相同,全等运算 2. 1 //注意:等于和全等运算符对于变量的默认值的比较是不同的 2 var a:Number; 3 var b:Number; 4 trace(a); 5 trace(b); 6 trace(a == b); 7 trace(a === b); 8 //输

JavaScript高级程序设计(第3版)第四章读书笔记

第四章 变量.作用域和内存问题 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象.基本数据类型是:Undefined.Null.Boolean.Number和String.引用类型的值是保存在内存中的对象.JavaScript不允许直接访问内存中的位置,即不能直接操作对象的内存空间. 不能给基本类型的值添加属性,只能给引用类型值动态地添加属性. 从一个变量向另一个变量复制基本类型值时,两个变量可以参

第四章:Javascript表达式和运算符

表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果.程序中常用量是最简单的一类表达式就是变量.变量名也是一种简单的表达式,它的值就是赋值给变量的值.复杂的表达式是由简单的表达式组成的.比如数组访问表达式是由一个表示数组的表达式,方括号.一个整数表达式构成.它们所组成新的表达式运算结果是该数组特定位置的元素值.同样的函 数调用表达式由一个表示函数对象的表达式和0个多个参数表达式构成.将简单表达式组成复杂表达式最常用的方法就是运算符. 本章(本文)将讲解所有ja

JavaScript学习笔记(第四章——第六章)

时间戳(2015-06-09 20:58:00) 第四章:变量.作用于和内存问题          typeof:判断元素是什么类型            instanceof:检测引用类型对象是否未指定类型          注:所有引用类型皆为Object的实例          JavaScript没有块级作用域:                    例1: if(true){ var color = “blue”; } alert(color);               // bl

JavaScript DOM编程艺术-学习笔记(第三章、第四章)

第三章: 1.js的对象分为三种:①用户自定义对象 ② 内建对象(js提供的对象) ③宿主对象(js寄宿的环境-浏览器,提供的对象) 2.文档是由节点组成的集合,即dom树,html元素是根元素,是唯一一个没有被其它元素包含的元素. 3.元素节点并非直接包含文本节点,例如:<ul><li>你好</li><ul>    ul元素并没有直接包含文本元素 4.获取元素的方法: ①getElementById() ②getElementsByTagName ()