本文深入解析 JavaScript 核心运算符与控制语句。详细讲解 in、条件(?:)、typeof 及 delete 运算符的用法与返回值特性,并通过代码示例演示对象属性检测、类型判断及属性删除。随后介绍 if、switch、while、for 等控制流语句,包含一个使用 do...while 和 for 循环实现数组排序的完整 JavaScript 示例,帮助读者掌握基础语法与实战应用。
JavaScript 运算符详解
具备计算机语言基础的用户对运算符通常较为熟悉,甚至可能比作者更为精通,因此此处不再赘述基础概念,重点介绍几个相对生疏的运算符。
1、in 运算符:该运算符要求左侧操作数为字符串或可转换为字符串的值,右侧操作数为数组或对象。若左侧值作为右侧对象的属性存在,则返回 true。
代码如下:
var objvalue = {x:1,y:7};
document.write("x is in objvalue:" + ("x" in objvalue) +"<br />");
//输出 x is in objvalue:true 2、条件运算符(?:)
这是 JavaScript 中唯一的三元运算符,包含三个操作数。第一个操作数必须是布尔值,第二和第三个操作数可以是任意类型。若第一个操作数为 true,则返回第二个操作数的值;若为 false,则返回第三个操作数的值。
代码如下:
document.write(1>0?8:4)
//输出8,1肯定大于0所以就返回第二个运算数 3、typeof运算符
typeof 是一元运算符,用于判断操作数的数据类型。例如,数字返回 number,字符串返回 string。需注意:对 null 的判断结果也是 object 类型。该运算符在实际开发中使用频率较高。
代码如下:
document.write("typeof number 8:" + typeof 8 +"<br />");//输出typeof number 8:number
document.write("typeof string money :" +typeof("money")+"<br />");//输出typeof string money :string
document.write("typeof boolean true :"+typeof(true) + "<br />");//输出typeof boolean true :boolean
document.write("typeof Array :"+typeof([]) + "<br />");//输出typeof Array :object
document.write("typeof Null :"+typeof(null) + "<br />");//输出typeof Null :object
document.write("typeof Undefined:"+typeof(undefined) + "<br />");//输出typeof Undefined:undefined 4、delete 运算符
delete 是一元运算符,用于删除指定对象的属性、数组元素或变量。若删除成功返回 true,若操作数不可删除则返回 false。
代码如下:
var deleteobj = {one:"one",two:"two",three:"three"};
document.write("delete element is succeed:" + (delete deleteobj.one) +"<br />");//输出delete element is succeed:true
document.write("select one in deleteobj :" + typeof(deleteobj.one)+"<br />");//输出select one in deleteobj :undefined
document.write("delete element is succeed:"+(delete deleteobj) +"<br />");//输出delete element is succeed:false
document.write("delete defined x:" + (delete x) + "<br />");//输出delete defined x:true
var x = 1;
//上面反映了delete,能删除对象的属性,变量,不能删除对象,没定义的变量。 javascript:语句
JavaScript 控制语句与排序示例
1、if,else if语句
作为基础语句,此处直接通过示例说明,这些控制语句在后续开发中将被频繁使用。
代码如下:
var expression;
if(!expression) document.write("我声明了,但没未定义值" +"<br />"); //输出:我声明了,但没未定义值
//因为expression 的值是undefined未定义,在用到boolean类型中,转换成了false。
if(!null)document.write("我用到boolean中也是false"+"<br />") //输出:我用到boolean中也是false
var obj1 = {};
if(obj1)document.write("obj1不是个null对象"+"<br />");//输出obj1不是个null对象
if(!obj1.one)document.write("obj1.one是个null对象"+"<br />");//obj1.one是个null对象
类似以上的语句在后续开发中可能会经常使用,需要深入理解,不可马虎对待。 2、switch语句、while、do...while 、for、for...in
上述语句与其他编程语言并无显著差异,此处直接展示作者上个月使用 C# 编写但改用 JavaScript 实现的题目代码。
代码如下:
//执行给数组排序
function comparenumber(objarr1)
{
if(!objarr1)
{
throw("参数不能为空!");
return;
}
var finished = true;//用于控制while循环
do
{
finished = false;
for(var i=0;i<objarr1.length;i++)//变量数组 length属性返回数组的长度
{
if(objarr1[i]>objarr1[i+1])//比较
{
var temp = objarr1[i];
objarr1[i] = objarr1[i+1];
objarr1[i+1] = temp;
finished = true;//继续循环,直到上面的比较条件不满足是while就不循环了。
}
}
}while(finished);
}
//该函数执行的是打印任务
function displayarray(arr)
{
for(var val in arr)
{
document.write(arr[val] +"\t");//\t 是制表符
}
}
var numberarray = [34,45,2,3,54,65,123];//声明一个数组
comparenumber(numberarray);//排序
displayarray(numberarray);//输出
//输出:2 3 34 45 54 65 123 3、with 语句
使用 with 语句可以大幅减少代码输入量,特别适用于 JavaScript 客户端中深度嵌套的对象访问,但其运行速度相对较慢。
小结:其实还有很多其它语句,在这里我就不多重复写了。