JS高级程序设计【红宝书】学习笔记——数据类型
目录
数据类型
Number类型
1.值的范围
2.NaN
3.数值转换
String类型
1.字符字面量(详见JS高级程序设计P63
2.转换为字符串
Symbol类型
Object类型
object实例的属性和方法:
数据类型
Number类型
1.值的范围
ECMAScript可表示的最小数值:Number.MIN_VALUE (多数浏览器中表示5e-324),可表示的最大数值:Number.MAX_VALUE (多数浏览器中表示1.7976931348623157e+308)
如果计算值超过JavaScript可表示的范围,转换为Infinity(正)无穷值,-Infinity(负)无穷值。判断是否是有限大,使用isFinite()函数
let result = Number.Max_VALUE;
console.log(isFinite(result)); //false
2.NaN
特殊数值“不是数值”(Not a Number)
console.log(NaN ==NaN); //falseconsole.log(isNaN(NaN)); //true
console.log(isNaN(10)); //false
console.log(isNaN("10")); //false,字符串转换为数值10
console.log(isNaN("blue")); //true,不可以转换为数值
console.log(isNaN(true)); //false,可以转换为数值1
3.数值转换
Number()函数:
- 布尔值,true转换为1,false转换为0
- 数值,直接返回
- null,返回0
- undefined,返回NaN
- 字符串
- 数字字符:十进制忽略前面的0,直接转换,十六进制,返回十进制整数
- 空字符串:返回0
- 其他:返回NaN
- 对象,调用valueOf(),按照上述规则转换返回值,如果转换结果是NaN,测调用toString()方法,再按照转换字符串的规则转换
console.log(Number("Hello world!")); //NaN
console.log(Number("")); //0
console.log(Number("00011")); //11
console.log(Number(true)); //1
parseInt()函数:
更关注字符串是否包含数值模式,字符串前面的空格会被忽略,第一个非空格字符不是数值字符、加减号,直接返回NaN【这意味着空字符串也会NaN】
console.log(parseInt("1234blue")); //1234
console.log(parseInt("")); //NaN
console.log(parseInt("0xA")); //10
console.log(parseInt(22.5)); //22
console.log(parseInt("70")); //70
console.log(parseInt("0xf")); //15
该函数也接受第二个参数为,指定底数(进制数)
console.log(parseInt("0xAF",16)); //175
console.log(parseInt("AF",16)); //175
console.log(parseInt("AF")); //NaN
parseFloat()函数:
类似parseInt()函数,但只识别第一个小数点,但该函数直解析十进制数,十六进制始终返回0,没有指定底数(进制数)
console.log(parseInt("1234blue")); //1234 console.log(parseInt("")); //NaN console.log(parseInt("0xA")); //0 console.log(parseInt("22.5"")); //22.5 console.log(parseInt("22.34.5"")); //22.34 console.log(parseInt("0908.5")); //908.5 console.log(parseInt("3.125e7")); //31250000
String类型
1.字符字面量(详见JS高级程序设计P63
2.转换为字符串
- toString()方法
可见于数值、布尔值、对象和字符串值(字符串值只是简单的返回自身的一个副本)
null和undefined值没有toString()方法
一般情况下,该方法不接受任何参数,对数值调用时,可以接受一个底数参数(进制数)
let a = true;
let aa = a.toString();//字符串"true"
- String()转型函数
始终返回表示相应类型值的字符串
如果值有toString()方法,则调用该方法(不传参数)并返回结果
如果值为null,返回"null"
如果值为undefined,返回"undefined"
let value3 = null;
console.log(String(value3));//"null" 同理undefined
- 模板字面量
ES6新增,跨行定义字符串,保留反引号内部的空格、换行
- 字符串插值
通过在${}中使用一个JavaScript表达式实现
let value = 5;
let str = `this is ${ value }`;
console.log(str); // this is 5
所有插入的值都会使用toString()强制转型为字符串
在插值表达式中可以调用函数和方法:
function capitalize(word) {return `${word[0].toUpperCase()}${word.slice(1)}`
}
console.log(`${capitalize('hello')}`)//Hello
let a = 6,b = 9function simpleTag(strings, aValExpression, Bval, sum) {console.log(strings)console.log(aValExpression)console.log(Bval)console.log(sum)return 'foobar'
}
let str1 = `${ a } + ${ b } = ${ a+b }`;let str2 = simpleTag`${a}+${b} = ${a+b}`;
// [ '', '+', ' = ', '' ]
// 6
// 9
// 15console.log(str1)// 6 + 9 = 15
console.log(str2)// foobarfunction zipTag(strings, ...expressions) {return strings[0] + expressions.map((e, i) => `${e}${strings[i+1]}`).join('')
}
let aaa = zipTag `${12} + ${44}`//后面直接加上模板字符串,这是一个标签函数
console.log(aaa)//12 + 44
Symbol类型
ES6新型的数据类型,详见js高级P69-80
Object类型
一组数据和功能的集合,object的实例本身并不是很有用,但理解与它相关的概念非常重要。
在es中Object是派生其他对象的几类,该类型的所有属性和方法在派生的对象上同样存在
object实例的属性和方法:
- constructor:创建当前对象的函数,该属性的值就是Object()
- hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)是否存在给定的属性【o.hasOwnProperty("name")】
- isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型
- propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用
- toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境
- toString():返回对象的字符串表示
- valueOf():返回对象对应的字符串、数值、布尔值表示,通常与toString()的返回值相同
JS高级程序设计【红宝书】学习笔记——数据类型相关推荐
- JavaScript高级程序设计红宝书学习笔记第三章基本概念
第三章 基本概念 本章内容 语法 数据类型 操作符 语句 函数 3.1 语法 3.1.1 区分大小写,ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 3.1.2 标识符 标识符:变 ...
- 《JavaScript高级程序设计(第四版)》红宝书学习笔记(1)
个人对第四版红宝书的学习笔记.不适合小白阅读.这是part1,包含原书第二章(HTML中的Javascript)和第三章(语言基础).持续更新,其他章节笔记看我主页. (记 * 的表示是ES6新增的知 ...
- 《JavaScript高级程序设计(第四版)》红宝书学习笔记(2)(第四章:变量、作用域与内存)
个人对第四版红宝书的学习笔记.不适合小白阅读.这是part2.持续更新,其他章节笔记看我主页. (记 * 的表示是ES6新增的知识点,记 ` 表示包含新知识点) 第四章:变量.作用域与内存 4.1 原 ...
- 《JavaScript高级程序设计(第四版)》红宝书学习笔记(第五章:基本引用类型,原始值包装类型,单例内置对象)
第五章:基本引用类型 引用值(或者对象)是某个特定引用类型的实例.新对象通过使用new操作符后跟一个构造函数(constructor)来创建. 5.1 Date 这里不对Date进行详细深入,仅基于书 ...
- js 红宝书学习笔记精简版 第一至三章
注: 本文js代码均已在本地实现过,如有异常问题,请在评论区留言.ctrl+f 可搜索有效内容, 加粗为重点 蓝色字体 为重中之重 (一) 什么是js 1995 年,JavaScript 问世. 完整 ...
- 红宝书背诵笔记 — 基础词
红宝书基础词 基础词-Unit1 基础词-Unit2 基础词-Unit3 基础词-Unit4 基础词-Unit5 基础词-Unit6 基础词-Unit7 基础词-Unit8 基础词-Unit9 基础词 ...
- 红宝书背诵笔记 — 简单基础词语
简单基础词 a开头的简单基础词 b开头的简单基础词 c开头的简单基础词 d开头的简单基础词 e开头的简单基础词 f开头的简单基础词 g开头的简单基础词 h开头的简单基础词 i开头的简单基础词 j开头的 ...
- Js高级程序设计第三版学习(十二章)
Js高级程序设计第三版学习(十二章) 第十二章 DOM2和DOM3 1.样式: 访问样式属性 任何支持style特性的HTML元素都有一 ...
- JS红宝书·读书笔记
JavaScript高级程序设计 花了半个多月的时间,终于又把"JS红宝书"又撸了一遍. 第一次读"JS红宝书"还是2015年初学JS的时候,那时候只是把语法部 ...
- 【JS红宝书学习】9客户端检测
因为浏览器间存在大大小小的差异以及怪癖(quirk),开发人员应当优先采取一种更通用的方法,然后在使用特定于浏览器的技术增强该方案.当然这是红宝书的观点,是一种渐进增强的观点,还有与之相对的优雅降级思 ...
最新文章
- 基于消失点的相机自标定(2)
- curl: (3) [globbing] error: bad range specification after pos 150的解决方法
- Java 处理 Exception 的 9 个最佳实践!
- python学习笔记(3) -- 常用数据类型
- centos yum 重新配置dns
- php判断记录,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程
- Python机器学习:KNN算法08scikit-learn中的Scaler
- 腾讯回应“QQ 冻结”;高德上线“家人地图”惹争议;Linux 内核讨论引入 Rust 代码| 极客头条...
- win10的ios镜像
- android手机版excel怎样填充序列号,规范日期数据的极简法。Excel填充功能快速填充序号操作详解。如何制作工作日序列号填充,快速填充功能无法使用...
- 迈入高端市场,荣耀凭什么?
- 计算机里面的Profile怎么翻译比较好?
- 计算机主机实际功率,PC动力之源,一起来算算电源真实功率吧!
- 设计模式 _第五招式_建造者模式
- 【1.01】VBA基础
- vsocde vue snippet 设置
- Σoφoς:简单但有效的前向安全对称可搜索加密
- 区块链每日快讯(0116)
- HTML5七夕情人节表白网页制作——蓝色梦幻海洋3D相册—— HTML+CSS+JavaScript
- 用python对某校园热水服务app进行测试,实现自动免费用水(仅供参考)
热门文章
- 专科学前教育要上计算机课吗,大专学前教育主要学什么课程内容
- 光纤进行万兆传输时的带宽和最大距离
- centos9的安装
- 【吭】django项目运行jira项目突然报错TypeError: session() takes 1 positional argument but 2 were given
- 【二维码图像矫正增强】基于MATLAB的二维码图像矫正增强处理仿真
- 单片机ISP、IAP和ICP几种烧录方式的区别
- kylix3 注册机
- java数据库连接池满了怎么查
- vba做mysql前端_Excel、VBA与MySQL交互
- 还在被R语言中的因子factor毒打吗