好!欢迎访问迷津渡口 现在时间是:

迷津渡口

越感到迷惑 越接近真理

javascript中逻辑运算符和逗号运算符的流程控制功能

逻辑运算符&&的短路特性:

&&运算过程:

首先计算左边表达式的值:
  若值为假或相当于假的值,则直接返回左边表达式的值,不继续计算右边表达式;
  若值为真或相当于真的值,则继续计算右边表达式的值,然后返回右边表达式的值。

例子:

// 左边为假的情况,直接返回左边表达式的值
var a = false && 10;
alert(a);			// false
a = 1<0 && 10;
alert(a);			// false
a = null && 10;
alert(a);			// null
a = undefined && 10;
alert(a);			// undefined
a = NaN && 10;
alert(a);                       // NaN
a = 0 && 10;
alert(a);			// 0
a = '' && 10;
alert(a);			// ''
a = 0.0 && 10;			// 0.0....后面可接多个0
alert(a);			// 0

// 左边为真的情况,继续右边表达式的计算,返回右边表达式的值10
a = true && 10;
alert(a);
a = 1>0 && 10;
alert(a);
a = '0' && 10;
alert(a);
a = {} && 10;
alert(a);
a = [] && 10;
alert(a);
a = function() {} && 10;
alert(a);
a = function() { return 0; } && 10;
alert(a);

与&&运算符流程控制表达式

可以直接丢弃表达式的值,直接采用&&的短路特性进行流程控制,一个小例子:

function a() {
	return false;
}
function b() {
    return true;
}
function c() {
    alert(d);
}
var d = '第一个表达式c函数不被调用,没有输出';
a() && c();
d = '第二个表达式c函数被调用,输出';
b() && c();

逻辑运算符或||的短路特性:

||运算过程:

首先计算左边表达式的值:
  若值为真或相当于真的值,则直接返回左边表达式的值,不继续计算右边表达式;
  若值为假或相当于假的值,则继续计算右边表达式的值,然后返回右边表达式的值。

例子:

// 左边为真的情况,返回左边表达式的值
var a = true || 10;
alert(a);                            // true
a = 1>0 || 10;
alert(a);                            // true
a = '0' || 10;
alert(a);                            // '0'
a = {} || 10;
alert(a);                            // [object Object]
a = [] || 10;
alert(a);                            // ''
a = function() {} || 10;
alert(a);                            // function () {}
a = function() { return 0; } || 10;
alert(a);                            // function () {return 0;}

// 左边为假的情况,继续右边表达式的计算,返回右边表达式的值10
a = false || 10;
alert(a);
a = 1<0 || 10;
alert(a);
a = null || 10;
alert(a);
a = undefined || 10;
alert(a);
a = NaN || 10;
alert(a);
a = 0 || 10;
alert(a);
a = '' || 10;
alert(a);
a = 0.0 || 10;	    // 0.0....后面可接多个0
alert(a);

或||运算符流程控制表达式

小例子:

function a() {
	return false;
}
function b() {
    return true;
}
function c() {
    alert(d);
}
var d = '第一个表达式c函数被调用,输出';
a() || c();
d = '第二个表达式c函数不被调用,没有输出';
b() || c();

逗号运算符

逗号运算符运算过程:

逗号运算符表示从左到右计算表达式的值,返回最后一个表达式的值。
需要注意:逗号运算符的优先级是最低的。

例子:

var a;
// 逗号,运算符优先级低于赋值运算符=,因此a为1
a=1,2,3;
alert(a);
// 利用括号改变优先级,此时a为3
a=(1,2,3);
alert(a);

逗号运算符流程控制表达式:

分号确定表达式结束,区别例子:var连续声明

// 逗号运算符实现连续声明
alert(a);alert(b);alert(c);    // 均输出undefined,表示都声明成功
var a=1,b=2,c=3;
alert(''+a+b+c);               // 输出'123'

// 分号造成错误
alert(a);    // a声明成功,输出undefined
alert(b);    // b声明失败,报错,停止向下运行
alert(c);
var a=1;b=2;c=3;
alert(''+a+b+c);

利用逗号表达式获取函数返回值:

function a() {
    var b = 1;
    var c = 2;
    return b++,c++,b+c;
}
// 首先b++,则b=2,然后c++,则c=3,最后b+c=5,则完整逗号表达式的值为5,函数返回5
alert(a());    // 输出5


小指才疏学浅,有任何疏漏之处,请不吝赐教~

点赞0
   支持一下
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
 点赞
 签到
 表情
 图片
 代码
提交评论

清空信息
关闭评论
 00:00/00:00
我想和你虚度时光 - 花房姑娘(9)
  1. 恋恋风尘
  2. 恋恋风尘
  3. 恋恋风尘
  4. 恋恋风尘
  5. 恋恋风尘
  6. 恋恋风尘
  7. 恋恋风尘
  8. 恋恋风尘
  9. 恋恋风尘