第4章 JavaScript表达式与运算符

if ( ( (b+c) * 30 + 70 * (d-3)) * e + 50 > 0 ) {
    document.write("b+c=" + (b+c));
}
<script type="text/javascript">
    var a = "4"; // 字符串变量
    var b = 4; // 数值型变量
    var c = a + b; // 表达式中,操作数b先被转换为字符串类型
    alert(c);// c是一个字符串类型
</script>

相等运算符“==”、不等运算符“!=”:

<script type="text/javascipt">
    var a = "10";
    var b = 10;
    if (a == b) { // a、b将发生类型转换,此处为:true
        alert("a等于b");
    }
</script>
<script type="text/javascript">
    var students = new Array("杨宗楠", "杨玉婷", "李莉");
    for (index in students) {
        if (students[index] != "杨宗楠") {
            document.write("<li>" + students[index]);
        } else {
            document.write("<li><font color=red>" + students[index] + "</font>");
        }
    }
</script>

等同运算符“===”、不等同运算符“!==”:

<script type="text/javascript">
    var a = "10"
    var b = 10;
    if (a == b) {
        document.write("<li>在非严格意义上,a等于b");
    }
    if (a ===b) {
        document.write("<li>a严格等于b");
    } else {
        document.write("<li>在严格意义上,a不等于b");
    }
</script>

var phone1 = "13800000000";
var phone2 = 13800000000;
if (phone1 !== phone2) { // true
    alert("两电话号码不相等");
}
<html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<li>50点点卡单价为4.5元,您确定购买
    <input id="text1" style="width: 31px; height: 18px" type="text"/>张
    <input id="button1" type="button" value="确定支付" onclick="return button1_onclick()">(不能超过5张)
</li>
<script type="text/javascript">
    function button1_onclick() {
        if (text1.value < 1 || isNaN(text1.value)) {
            alert("您输入不正确,请重新输入");
            text1.value = ""; // 清空输入框
        } else {
            alert("您应当支付:" + text1.value * 4.5 + "元");
        }
    }
</script>
</body>
</html>

 

<script type="text/javascript">
    var actTotal = 109.7;
    var payTotal = 123.45;
    document.write("<li>您账上余额:" + actTotal + "元<br>");
    document.write("<li>您需要支付:" + payTotal + "元<br>");
    document.write("<input id='btn_pay' type='button' value='确认支付' style='width: 150px' onclick='btn_pay_onclick()'/><br>");
    if (payTotal > actTotal) {
        document.write("信息:<font color='red'>您余额不足,无法完成支付!</font>");
        btn_pay.disabled = true;
    } else {
        btn_pay.disabled = false;
    }
    function btn_pay_onclick() {
        document.write("<li><font color='red'>已完成支付</font>");
        document.write("您账上余额:" + (actTotal - payTotal) + "元<br>");
    }
</script>

instanceof运算符:

instanceof运算符返回一个布尔值,表明某对象是否是某个类的实例。得到一个对象时,有时需要得知其属于哪个类,确定对象的身份。

使用语法:

result = Obj instanceof Class
如果Obj是类Class的对象,则result返回ture,否则返回false。
var nameList = new Array("Lily", "Bob", "Petter");
var nameJet = "Jet";
if (nameList instanceof Array) {// 如果nameList是数组对象实例,则
    nameList.push(nameJet);// 将"Jet"名字添加到数组中
}

当要确定某个对象的类型时可以使用typeof运算符。

字符串、逻辑运算符、位运算符这里就不介绍了,与其他高级编程语言类似。

new运算符:

使用语法:

new constructure([args,[...]);
• constructure:类的构造函数,用于构造对象
• args:传递给构造函数的参数,可选项
————————————————————————————————————————
例如,创建一个字符串对象:
var myName = new String("Foxsir");
注:若要删除之,必须对引用对象的变量赋null值。

void运算符:

表达式可以返回一个值,然而有些地方却不需要返回值。此时可以使用void运算符来避免表达式返回值,void运算符可以带来灵活的设计。

例如,将JavaScript代码写到浏览器地址栏中并执行,为了使当前文档内容不至于被清除,地址栏中的代码不能有返回值。

open方法返回一个值引用新打开的窗口如果不使用void运算符屏蔽返回值,当前窗口的内容将被清除并且写入“[Object]”。

void可以让表达式被执行而结果被忽略,这个特性在一些场合非常有用。

typeof运算符:

typeof返回6种可能的值:"Number"、"String"、"Boolean"、"Object"、"Function"、"undefined"。

<script type="text/javascript">
    var t1 = 123;
    var t2 = "abc";
    var t3 = true;
    var t4 = new String();
    var t5 = f;
    var t6;
    document.write("<li>" + typeof t1 + "<br>");
    document.write("<li>" + typeof t2 + "<br>");
    document.write("<li>" + typeof t3 + "<br>");
    document.write("<li>" + typeof t4 + "<br>");
    document.write("<li>" + typeof t5 + "<br>");
    document.write("<li>" + typeof t6 + "<br>");

    document.write("--" + typeof (typeof t4) + "--");
    function f() {
        return 0;
    }
</script>

 

可以看到,typeof(表达式)返回的类型是对应的字符串小写。

注:如果t5赋值为一个自定义的function的名字,则typeof类型为这个function返回值的类型。

delete运算符:

要删除使用new运算符创建的对象需要将对象的引用赋值null,当引用为0时系统自动收回对象所占资源。delete运算符则可以删除对象的一个属性或数组的一个元素,JavaScript对象的属性可以动态添加。对于动态添加的属性可以用delete运算符将其删除,这与其他面向对象的编程语言不同。

<script type="text/javascript">
    var student = new Object();
    student.name = "Tom";
    student.age = 20;
    student.sex = "男";
    document.write("<li>" + student["name"] + ":" + student["sex"] + " " + student["age"]);
    delete student.age;
    document.write("<br>删除age属性<br><li>" + student["name"] + ":" + student["sex"] + " " + student["age"]);
</script>

函数调用运算符call:

函数调用运算符“call”,作用于Function对象。主要功能是调用对象的一个方法,并以另一个对象作替换为当前对象,以改变this指针的指向。JavaScript函数和对象方法的调用通常发生于一个运行地上下文中,一般为Global对象上下文。但当前执行上下文可以更改,使用call运算符即可达到目的。

语法如下:

对象名.call([thisObj, [arg1, [arg2, [argn, [...]]]]])
• 对象名:为一个有效的Function对象
• thisObj:是即将转换为当前上下文对象的对象引用,可选,当省略时自动设置为Global对象
• arg:是传递给Function对象的参数,可选

使用call运算符可以改变函数执行上下文,这个特性在一些特殊场合非常有用。

<script type="text/javascript">
    function showStudentInfo() {
        document.write("<li>" + this.name + " " + this.age + "<br>");
    }
    function Student(_name, _age) {
        this.name = _name;
        this.age = _age;
    }
    var stu1 = new Student("Tom", 20);
    var stu2 = new Student("Lily", 21);
    showStudentInfo.call(stu1);
    showStudentInfo.call(stu2);
</script>

call运行符调用函数showStudentInfo,此时执行上下文分别改变为stu1和stu2,目的是重设函数对象showStudentInfo的this指针的指向。

this运算符:

“this”严格地说是一个关键字,也可以理解为运算符。面向对象的编程中要引用当前对象,this运算符可以返回当前对象的引用。this通常用在对象构造函数中,用来引用函数对象本身。

给自定义对象添加属性时,在类构造函数中使用this运算符。

例如,创建一个汽车类,给汽车添加最大速度和载重属性:

function Car(_rateMax, _carryingCapacity) {// 构造函数
    this.rateMax = _rateMax; // 添加属性:极速
    this.carryingCapacity = _carryingCapacity;// 添加属性:最大载重
}

运算符优先级:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itzyjr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值