本文详细解析JavaScript中的核心运算机制,涵盖算术运算符的自增自减差异、比较运算符的类型转换规则、逻辑运算符的短路特性,以及if-else、switch和多种循环语句(for、forEach、map、filter、while)的具体用法与执行逻辑,帮助开发者掌握基础编程控制流。
算术运算符
var a = 10;
var b = 2;
//加法运算 +
console.log(a+b);
//减法运算 -
console.log(a-b);
//乘法运算 *
console.log(a*b);
//除法运算 /
console.log(a/b);
//取余运算 %
console.log(a%3);
//赋值运算 同样的可以适用于 以上的其他运算符
b += 2;
console.log(b);
//自增运算
console.log(a++);
console.log(++a);
//自减运算
console.log(a--);
console.log(--a);注意:在使用自增(++)和自减(--)运算符时,需严格区分其前置与后置形式的区别。
第17行代码 `console.log(a++);` 的执行逻辑是:首先输出变量 a 当前的值,随后再执行 a 的自增操作。
第18行代码 `console.log(++a);` 的执行逻辑是:首先执行 a 的自增操作,然后将增加后的值输出。
比较运算符
var a = 10;
var b = 2;
console.log(a>b);
console.log(a<b);
console.log(a=="10");
console.log(a==="10");
console.log(b!="2");
console.log(b!=="2");
console.log(a>=10);
console.log(b<=2);注意:
重点区分 `==` 与 `===` 的行为差异。尽管 JavaScript 属于弱类型语言,但这并不意味着它没有类型概念。`==` 运算符在比较时不会严格检查类型,而是尝试进行隐式类型转换;相反,`===` 运算符会先严格判断类型,类型不同则直接返回 false。同理,`!=` 不进行类型判断,而 `!==` 会进行严格的类型判断。
var a = 10;
var b = 2;
console.log(a && b);
console.log( 0 && a );
console.log(a || 0);
console.log(0 || a);
//
1 && console.log("9");
0 && console.log("99");
1 || console.log("999");
0 || console.log("9999");
观察上述 `&&`(逻辑与)和 `||`(逻辑或)的运算结果:`&&` 用于判断两个操作数是否均为真值;`||` 用于判断是否至少有一个操作数为真值。
通过带有输出的示例可以看出短路特性:对于 `&&` 运算,若第一个操作数为假,则不再执行第二个操作数;对于 `||` 运算,若第一个操作数为真,则不再执行第二个操作数。
条件判断
var a = 10;
if(a>100)
{
console.log("a大于100");
}else if(a>9){
console.log("a大于10");
}else{
console.log("a是其他的值");
}注意:
基本语法结构为 `if(条件为真){执行语句}else{条件为假时执行语句}`,用于实现基础的逻辑分支判断。
var c = Math.round(Math.random()*3);
switch(c)
{
case 0:
console.log("我是0");
break;
case 1:
console.log("我是1");
break;
case 3:
console.log("我是3");
break;
}注意:在刷新界面时输出值会变化,这是因为 `Math.random()` 用于生成 0 到 1 之间的随机数;而 `Math.round()` 用于执行四舍五入运算。
`switch...case...` 语句依据 switch 括号内的值,匹配并执行对应的 case 分支;若需设置默认执行路径,可使用 `default` 关键字。
循环语句
var arr = [1,22,333,4444,55555];
for(var i=0;i<arr.length;i++)
{
console.log("我是第"+i+"个索引,值为:"+arr[i]);
}
arr.forEach((item,index)=>{
console.log("第"+index+"个索引的值为:"+item);
})
arr.map((value,index,array)=>{
console.log("哈哈,输出第"+index+"个 "+value);
})
var result = arr.filter((value,index,array)=>{
return value>100;
})
console.log(result);
var a = 10;
while(a>0)
{
a--;
console.log(a);
}
console.log("分割线**********************************");
a = 10;
do{
a--;
console.log(a);
}while(a>0)注意:
for 循环语法为 `for(var i=0;i<arr.length;i++){...}`。当变量 i 小于数组 arr 的长度时,将执行大括号 {} 内的代码块。
forEach 循环语法为 `arr.forEach((item,index)=>{})`。该结构依次取出数组 arr 中的值传入回调函数执行,参数 item 代表取出的数组元素值,index 代表当前元素的索引。`(item,index)=>{}` 是 ES6 箭头函数的简写形式,等价于 `function (item,index){}`。
map 方法的用法与 forEach 类似,但 map 会返回一个新数组。
filter 方法意为过滤。在其中编写一个函数,依次将数组 arr 取出的值传入判断;若函数返回值为真(例如判断值大于1),则该取出的数组元素将被放入返回的结果数组中。
`while()do{}` 和 `do{}while()` 两种循环结构:当 while 条件为真时,均会执行 do 后大括号内的语句。二者的区别在于执行顺序:`do...while` 先执行语句再判断条件;而 `while...do` 先判断条件再执行语句。
总结
至此,关于 JavaScript 逻辑与运算的文章介绍完毕。如需了解更多相关 js 逻辑与运算内容,请搜索本站历史文章或继续浏览后续相关文章,感谢大家的支持!