JavaScript高级程序设计读书分享之3章——3.4数据类型

news2024/9/22 7:38:14

JavaScript高级程序设计(第4版)读书分享笔记记录

适用于刚入门前端的同志

 ECMAScript 有 6 种简单数据类型(也称为原始类型):UndefinedNullBooleanNumberString 和 Symbol(es6新增)。  

还有一种复杂数据类型叫 Object(对象)

目录

typeof 操作符

Undefined 类型

Null 类型

Boolean 类型

Number 类型

浮点值

NaN 

数值转换

String 类型

String()

模板字面量

字符串插值

Symbol 类型

Object 类型


typeof 操作符

对一个值使用 typeof 操作符会返回下列字符串之一:
  •  "undefined"表示值未定义;
  •   "boolean"表示值为布尔值;
  •  "string"表示值为字符串;
  •  "number"表示值为数值;
  •  "object"表示值为对象(而不是函数)或 null
  •  "function"表示值为函数;
  •  "symbol"表示值为符号。
let message = "some string"; 
console.log(typeof message); // "string" 
console.log(typeof(message)); // "string" 
console.log(typeof 95); // "number"

Undefined 类型

Undefined 类型只有一个值,就是特殊值 undefined 。当使用 var let 声明了变量但没有初始
化时,就相当于给变量赋予了 undefined

Null 类型

Null 类型同样只有一个值,即特殊值 null 。逻辑上讲, null 值表示一个空对象指针,这也是给
typeof 传一个 null 会返回 "object" 的原因

let car = null; 
console.log(typeof car); // "object"

Boolean 类型

Boolean (布尔值)类型是 ECMAScript 中使用最频繁的类型之一,有两个字面值: true false
不同类型与布尔值之间的转换规则

//理解以上转换非常重要,因为像 if 等流控制语句会自动执行其他类型值到布尔值的转换,例如:
let message = "Hello world!"; 
if (message) { 
 console.log("Value is true"); 
}

Number 类型

浮点值

let floatNum1 = 1.1; 
let floatNum2 = 0.1;

NaN 

有一个特殊的数值叫 NaN ,意思是“不是数值”( Not a Number ),用于表示本来要返回数值的操作失败了(而不是抛出错误)。
isNaN() 函数:该函数接收一个参数,可以是任意数据类型,然后判断这个参数是否“不是数值”。
console.log(isNaN(NaN)); // true 
console.log(isNaN(10)); // false,10 是数值
console.log(isNaN("10")); // false,可以转换为数值 10 
console.log(isNaN("blue")); // true,不可以转换为数值
console.log(isNaN(true)); // false,可以转换为数值 1

数值转换

有3 个函数可以将非数值转换为数值: Number()parseInt()parseFloat()
Number() 函数基于如下规则执行转换:
  • 布尔值,true 转换为 1false 转换为 0
  •  数值,直接返回。
  •  null,返回 0
  •  undefined,返回 NaN
  •  字符串,有相应规则(具体见书籍36页)。
let num1 = Number("Hello world!"); // NaN 
let num2 = Number(""); // 0 
let num3 = Number("000011"); // 11 
let num4 = Number(true); // 1
通常在需要得到整数时可以优先使 用 parseInt() 函数。
let num1 = parseInt("1234blue"); // 1234 
let num2 = parseInt(""); // NaN 
let num3 = parseInt("0xA"); // 10,解释为十六进制整数
let num4 = parseInt(22.5); // 22 
let num5 = parseInt("70"); // 70,解释为十进制值
let num6 = parseInt("0xf"); // 15,解释为十六进制整数
parseFloat()
let num3 = parseFloat("22.5"); // 22.5 
let num4 = parseFloat("22.34.5"); // 22.34

String 类型

String()

let value1 = 10; 
let value2 = true; 
let value3 = null; 
let value4; 
console.log(String(value1)); // "10" 
console.log(String(value2)); // "true" 
console.log(String(value3)); // "null" 
console.log(String(value4)); // "undefined"

模板字面量

ECMAScript 6 新增了使用模板字面量定义字符串的能力。
注意: 由于模板字面量会保持反引号内部的空格,因此在使用时要格外注意。

let myTemplateLiteral = `first line 
 second line`; 
console.log(myTemplateLiteral.length); // 47

字符串插值

模板字面量最常用的一个特性是支持字符串插值,也就是可以在一个连续定义中插入一个或多个
值。
字符串插值通过在 ${} 中使用一个 JavaScript 表达式实现:
let age = 25
let name = '小美'; 
// 以前,字符串插值是这样实现的:
let interpolatedString = 
 name+ ' 今年 ' + age + ' 岁了 '; 
// 现在,可以用模板字面量这样实现:
let interpolatedTemplateLiteral = 
 `${ name } 今年 ${ age } 岁了`; 
console.log(interpolatedString); // 小美今年25岁了
console.log(interpolatedTemplateLiteral); // 小美今年25岁了

Symbol 类型

Symbol (符号)是 ECMAScript 6 新增的数据类型。符号是原始值,且符号实例是唯一、不可变的。 符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。
symbol类型通过Symbol函数生成,用于表示独一无二的值
let sym = Symbol(); 
console.log(typeof sym); // symbol
      

即使使用相同的字符串来创建Symbol类型的值,这些值也是不同的

let fooSymbol = Symbol('foo'); 
let otherFooSymbol = Symbol('foo'); 
console.log(genericSymbol == otherGenericSymbol); // false

最重要的是, Symbol() 函数不能与 new 关键字一起 作为构造函数 使用
let mySymbol = new Symbol(); // TypeError: Symbol is not a constructor

Object 类型

ECMAScript 中的对象其实就是一组数据和功能的集合。对象通过 new 操作符后跟对象类型的名称
来创建。
let o = new Object();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vim编辑器和gcc/g++编译器和gdb调试器和make/makefile自动化构建工具的使用

vim的三种模式(其实有好多模式 )(1).命令模式(2).插入模式(3).底行模式vim的基本操作vim的命令模式的基本操作vim的插入模式的基本操作vim的底行模式的基本操作vim的配置gcc和g相关操作(1&#…

XCP实战系列介绍11-几个常用的XCP命令解析

本文框架 1.概述2. 常用命令解析2.1 CONNECT连接(0xFF)2.2 SHORT_UPLOAD 命令(0xF4)2.2 SET_MTA (0xF6)2.3 MOVE命令(0x19)2.4 GET_CAL_PAGE(0xEA)2.5 SET_CAL_PAGE(0xEB)2.6 DOWNLOAD(0xF0)1.概述 在文章《看了就会的XCP协议介绍》中详细介绍了XCP的协议,在《XCP实战系列介绍…

Python面试——装饰器

知识链接: 装饰器 装饰器可调用的对象,其参数是被装饰的函数。装饰器可能会处理被装饰的函数然后把它返回,或者将其替换成另外一个函数或者可调用对象。 装饰器有两大特性: 能把被装饰的函数替换成其他函数(在元编程…

面试腾讯测试岗后感想,真的很后悔这5年一直都干的是基础测试....

前两天,我的一个朋友去大厂面试,跟我聊天时说:输的很彻底… 我问她:什么情况?她说:很后悔这5年来一直都干的是功能测试… 相信许多测试人也跟我朋友一样,从事了软件测试很多年,却依…

树莓派用默认账号和密码登录不上怎么办;修改树莓派的密码

目录 一、重置树莓派的默认账号和密码 二、修改树莓派的密码 三、超级用户和普通用户的切换 一、重置树莓派的默认账号和密码 在SD卡中根目录建立文件userconf 在userconf中输入如下内容: pi:$6$/4.VdYgDm7RJ0qM1$FwXCeQgDKkqrOU3RIRuDSKpauAbBvP11msq9X58c8Q…

STM32开发(10)----CubeMX配置基本定时器

CubeMX配置基本定时器前言一、定时器的介绍二、实验过程1.实验材料2.STM32CubeMX配置基本定时器2.代码实现3.编译烧录4.硬件连接5.实验结果总结前言 本章介绍使用STM32CubeMX对基本定时器进行配置的方法,STM32F103高性能系列设备包括基本定时器、高级控制定时器、通…

JavaEE-HTTP协议(一)

目录什么是HTTP协议?协议格式如何看到HTTP的报文格式?HTTP请求HTTP响应URLURL encode/decode什么是HTTP协议? 计算机网络,核心概念,网络协议 网络协议种类非常多,其中一些耳熟能详的,IP,TCP,UD…

shell命令行并行神器 - parallel

shell命令行并行神奇 - parallel 概述 GNU parallel 是一个 shell 工具,用于使用一台或多台计算机并行执行作业。作业可以是单个命令或必须为输入中的每一行运行的小脚本。典型的输入是文件列表、主机列表、用户列表、URL 列表或表列表。作业也可以是从管道读取的…

98年的确实卷,公司新来的卷王,我们这帮老油条真干不过.....

都说00后躺平了,但是有一说一,该卷的还是卷。这不,前段时间我们公司来了个00后,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …

电脑麦克风没声音怎么办?这3招就可以解决!

最近有用户在使用电脑麦克风进行视频录制时,发现麦克风没有声音。这是什么原因?电脑麦克风没有声音怎么办?关于解决方案,我专门整理了三种方法来帮你们,一起来看看吧! 操作环境: 演示机型&#…

在TitanIDE中使用ChatGPT辅助科研开发

作者:行云创新CEO 马洪喜 命题:太空望远镜拍摄的照片处理 假设:我是图形科学家,但不是特别懂Python 先上传一张银河系照片,目的是把彩色转成灰度: 然后我不会啊, 问问chatGPT 彩色图片转灰度…

电话号码的字母组合-力扣17-java

一、题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits "23"输出…

Android 一体机研发之修改系统设置————自动锁屏

Android 一体机研发之修改系统设置————屏幕亮度 Android 一体机研发之修改系统设置————声音 Android 一体机研发之修改系统设置————自动锁屏 修改系统设置系列篇章马上开张了! 本章将为大家细节讲解自动锁屏。 自动锁屏功能,这个可以根据…

简述springIOC容器的bean加载流程

参考笔记:https://blog.51cto.com/u_14006572/3118363 https://zhuanlan.zhihu.com/p/386335813 https://blog.csdn.net/mrathena/article/details/115654379 目录结构 spring ioc容器的加载,大体上经过以下几个过程: 资源文件定位、解析、注册、实例化…

UWA Pipeline 2.4.1 版本更新说明

UWA Pipeline是一款面向游戏开发团队的本地协作平台,旨在为游戏开发团队搭建专属的DevOps研发交付流水线,提供可视化的CICD操作界面、高可用的自动化测试以及UWA性能保障服务的无缝贴合等实用功能。 在本次UWA Pipeline 2.4.1版本更新中,主要…

PIL.Image与cv2之间的常用API汇总

简单介绍 主要是因为经常用到这两个,经常弄混淆,所以,总结一番。持续更新。 from PIL import Image import cv2 as cv import numpy as np import matplotlib.pyplot as plt1、读取文件与写入文件 1.1 Image.open() img_pil Image.open…

电商数据监测——中国白酒行业数据浅析

大国盛世酿,万家潭酒香。中国白酒是中国特色文化之一。 2022年,国内白酒总产量为671.2万千升,处于持续下滑的态势。 白酒产量不佳,但线上平台的销售情况却成绩优异。2022年,京东平台白酒的年度总销量超3500万件,同比去…

操作系统开发:编写开机引导

操作系统是用来管理与协调硬件工作的,开发一款操作系统有利于理解底层的运转逻辑,本篇内容主要用来理解操作系统是如何启动的,又是如何加载磁盘中的内核的,该系列文章参考各类底层书籍,通过自己的理解并加以叙述&#…

彻底理解 cookie、session、token (一)

发展史 1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记…

阿里巴巴在开源压测工具 JMeter 上的实践和优化

Apache JMeter [1] 是 Apach 旗下的开源压测工具,创建于 1999 年初,迄今已有超过 20 年历史。JMeter 功能丰富,社区(用户群体)庞大,是主流开源压测工具之一。 性能测试通常集中在新系统上线或大型活动前&…