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;// 添加属性:最大载重
}
运算符优先级: