从零开始学web开发之JavaScript-3.数据类型-(3)布尔值boolean

本文详细介绍了JavaScript中的布尔值及其应用,包括逻辑运算符(逻辑与、逻辑或、取反)、关系运算符(相等、大小比较、三元运算符)以及位运算符的使用方法,并通过具体示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节内容引用 《JavaScript 标准参考教程(alpha)》,by 阮一峰

1.简介

  • 布尔值只有两个值,真与假,用true与false两个关键字表示。
  • 一般用于程序流程的控制,if(布尔值)用以判断状态。

2.逻辑运算符

<1>.逻辑与&&(and)

a && b.
  • 如果 a = true,b=true;则结果为true.
  • 如果a=false;则结果为false,并且不会再判断b的值。
  • 如果a=true,b=false;则结果为false.

<2>.逻辑或||(or)

a || b.
  • 如果 a = false,b=flase;则结果为false.
  • 如果a=true;则结果为true,并且不会再判断b的值。
  • 如果a=false,b=true;则结果为true.

或运算符常用于为一个变量设置默认值。

function saveText(text) {
  text = text || '';
  // ...
}

// 或者写成

saveText(this.text || '')

上面代码表示,如果函数调用时,没有提供参数,则该参数默认设置为空字符串。

<3>.取反!(not)

!a,
!b.
  • 如果a=true,则!a=false;
  • 如果b=false,则!b=true;

以下六个值取反后为true,其他值取反后都为false。

  • undefined
  • null
  • false
  • 0(包括+0和-0)
  • NaN
  • 空字符串(”)

如果对一个值连续做两次取反运算,等于将其转为对应的布尔值,与Boolean函数的作用相同,两次取反就是将一个值转为布尔值的简便写法。

3.关系运算符

比较运算符用于比较两个值,然后返回一个布尔值,表示是否满足比较条件。
比较运算符可以比较各种类型的值,不仅仅是数值。

<1>.相等比较符

1. 严格相等比较符 \=\=\= ,类型与值一致的比较符
  • 先比较两者的类型是否一致,如不一致,则直接返回false;
  • 然后再比较两者值的大小,如相等才返回true.
    如:
1 === "1";//false
 +0===-0;//true

对于两个对象,===比较的是两者的对象地址是否一致。
如:

{} === {} // false
[] === [] // false
var v1 = {};
var v2 = v1;
v1 === v2 // true
2. 严格不相等运算符, !==
  • 严格相等运算符有一个对应的“严格不相等运算符”(!==),两者的运算结果正好相反。
3. 相等比较符,==,只比较两者的值是否相等。

如:

1 == true // true
// 等同于 1 === 1

0 == false // true
// 等同于 0 === 0

对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。

[1] == 1 // true
// 等同于 Number([1]) == 1

[1] == '1' // true
// 等同于 String([1]) == Number('1')
4. 不相等运算符,!=
  • 相等运算符有一个对应的“不相等运算符”(!=),两者的运算结果正好相反。

<2>.大小比较符

  • 如果两个运算子都是字符串,则按照字典顺序比较(实际上是比较Unicode码点)。
  • 否则,将两个运算子都转成数值,再进行比较(等同于先调用Number函数)。

    1. 如果两者都是原始类型,会先转为数值再进行比较。
true > false // true
// 等同于 Number(true) > Number(false)
// 即 1 > 0
  1. 如果比较的两者是对象,必须先将其转为原始类型的值,即先调用valueOf方法,如果返回的还是对象,再接着调用toString方法。
var x = [2];
[2] > [1] // true
// 等同于 [2].valueOf().toString() > [1].valueOf().toString()
// 即 '2' > '1'
  1. 因为比较是unicode码点,所以中文也可用以比较。
'大' > '小' // false

上面代码中,“大”的 Unicode 码点是22823,“小”是23567,因此返回false。

<3>.三元运算符

表达式:

boolean?a:b;

如果boolean为true,同返回a;否则返回b.
相当于if..else的简易表达,区分在于三元运算符有返回值,而if.else无返回值。
示例:

var str1 = 1?"school":"home";
//str1的值为school.s

4.位运算符

这些位运算符直接处理每一个比特位(bit),所以是非常底层的运算,好处是速度极快,缺点是很不直观,许多场合不能使用它们,否则会使代码难以理解和查错。
位运算符只对整数起作用,如果一个运算子不是整数,会自动转为整数后再执行。
JavaScript中的数值都是以64位浮点数的形式储存,但是做位运算的时候,是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数.

位运算符用于直接对二进制位进行计算,一共有7个。

  • 或运算(or):符号为|,表示若两个二进制位都为0,则结果为0,否则为1。
i = i | 0;将i(不管是整数或小数)转为32位整数。
这个特性可用以将一个值转为整数。
  • 与运算(and):符号为&,表示若两个二进制位都为1,则结果为1,否则为0。
  • 否运算(not):符号为~,表示对一个二进制位取反。
  • 异或运算(xor):符号为^,表示若两个二进制位不相同,则结果为1,否则为0。
  • 左移运算(left shift):符号为<<,左移运算符表示将一个数的二进制值向左移动指定的位数,尾部补0,即乘以2的指定次方(最高位即符号位不参与移动)。
  • 右移运算(right shift):符号为>>,右移运算符表示将一个数的二进制值向右移动指定的位数,头部补0,即除以2的指定次方(最高位即符号位不参与移动)。
  • 带符号位的右移运算(zero filled right shift):符号为>>>,该运算符表示将一个数的二进制形式向右移动,包括符号位也参与移动,头部补0。所以,该运算总是得到正值。对于正数,该运算的结果与右移运算符(»)完全一致,区别主要在于负数。。

    5.示例网页

    网页链接

onfire.js 是一个很简单的事件分发的Javascript库(仅仅 0.9kb),简洁实用。 可以用于: 简单的事件分发; 在 react / vue.js / angular 用于跨组件的轻量级实现; 事件订阅和发布; API方法: 1.on(event_name, callback) 绑定事件,参数为event_name和callback, 当有名字为event_name的事件发生的时候,callback方法将会被执行。 这个方法会返回一个eventObj,这个可以用于使用un(eventObj)方法来取消事件绑定。 2.one(event_name, callback) 绑定(订阅)事件,参数为 event_name with callback. 当被触发一次之后失效。只能被触发一次,一次之后自动失效。 3.fire(event_name, data) 触发名字为event_name的事件,并且赋予变量data为callback方法的输入值。 4.un(eventObj / eventName / function) 取消事件绑定。可以仅仅取消绑定一个事件回调方法,也可以直接取消全部的事件; 5.clear() 清空所有事件。 使用Demo: 1. 引入js文件 npm install onfire.js 可以使用[removed]标签直接引入; 也可以使用require或者import关键字引入,会得到全局变量 onfire。 import onfire from &#39;onfire.js&#39;; // or var onfire = require("onfire.js"); 2. 简单使用 使用方法on来订阅事件, 使用un来取消订阅, 使用fire方法来触发事件。 import onfire from &#39;onfire.js&#39;; // 绑定事件 var eventObj = onfire.on(&#39;test_event&#39;, function(data) {     console.log(&#39;this is a event 1&#39;); }); var eventObj2 = onfire.on(&#39;test_event&#39;, function(data) {     console.log(&#39;this is a event 2&#39;); }); // 触发事件 onfire.fire(&#39;test_event&#39;, &#39;test_data&#39;); // 取消绑定 onfire.un(eventObj); // 取消绑定这个事件. onfire.un(&#39;test_event&#39;); // 取消绑定所有的 `test_event`. 标签:onfire
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值