目录

数据类型

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
  • 字符串
  1. 数字字符:十进制忽略前面的0,直接转换,十六进制,返回十进制整数
  2. 空字符串:返回0
  3. 其他:返回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,没有指定底数(进制数)

  1. 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实例的属性和方法:

  1. constructor:创建当前对象的函数,该属性的值就是Object()
  2. hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)是否存在给定的属性【o.hasOwnProperty("name")】
  3. isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型
  4. propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用
  5. toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境
  6. toString():返回对象的字符串表示
  7. valueOf():返回对象对应的字符串、数值、布尔值表示,通常与toString()的返回值相同

JS高级程序设计【红宝书】学习笔记——数据类型相关推荐

  1. JavaScript高级程序设计红宝书学习笔记第三章基本概念

    第三章 基本概念 本章内容 语法 数据类型 操作符 语句 函数 3.1 语法 3.1.1 区分大小写,ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 3.1.2 标识符 标识符:变 ...

  2. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(1)

    个人对第四版红宝书的学习笔记.不适合小白阅读.这是part1,包含原书第二章(HTML中的Javascript)和第三章(语言基础).持续更新,其他章节笔记看我主页. (记 * 的表示是ES6新增的知 ...

  3. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(2)(第四章:变量、作用域与内存)

    个人对第四版红宝书的学习笔记.不适合小白阅读.这是part2.持续更新,其他章节笔记看我主页. (记 * 的表示是ES6新增的知识点,记 ` 表示包含新知识点) 第四章:变量.作用域与内存 4.1 原 ...

  4. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(第五章:基本引用类型,原始值包装类型,单例内置对象)

    第五章:基本引用类型 引用值(或者对象)是某个特定引用类型的实例.新对象通过使用new操作符后跟一个构造函数(constructor)来创建. 5.1 Date 这里不对Date进行详细深入,仅基于书 ...

  5. js 红宝书学习笔记精简版 第一至三章

    注: 本文js代码均已在本地实现过,如有异常问题,请在评论区留言.ctrl+f 可搜索有效内容, 加粗为重点 蓝色字体 为重中之重 (一) 什么是js 1995 年,JavaScript 问世. 完整 ...

  6. 红宝书背诵笔记 — 基础词

    红宝书基础词 基础词-Unit1 基础词-Unit2 基础词-Unit3 基础词-Unit4 基础词-Unit5 基础词-Unit6 基础词-Unit7 基础词-Unit8 基础词-Unit9 基础词 ...

  7. 红宝书背诵笔记 — 简单基础词语

    简单基础词 a开头的简单基础词 b开头的简单基础词 c开头的简单基础词 d开头的简单基础词 e开头的简单基础词 f开头的简单基础词 g开头的简单基础词 h开头的简单基础词 i开头的简单基础词 j开头的 ...

  8. Js高级程序设计第三版学习(十二章)

                                  Js高级程序设计第三版学习(十二章) 第十二章 DOM2和DOM3   1.样式: 访问样式属性 任何支持style特性的HTML元素都有一 ...

  9. JS红宝书·读书笔记

    JavaScript高级程序设计 花了半个多月的时间,终于又把"JS红宝书"又撸了一遍. 第一次读"JS红宝书"还是2015年初学JS的时候,那时候只是把语法部 ...

  10. 【JS红宝书学习】9客户端检测

    因为浏览器间存在大大小小的差异以及怪癖(quirk),开发人员应当优先采取一种更通用的方法,然后在使用特定于浏览器的技术增强该方案.当然这是红宝书的观点,是一种渐进增强的观点,还有与之相对的优雅降级思 ...

最新文章

  1. 基于消失点的相机自标定(2)
  2. curl: (3) [globbing] error: bad range specification after pos 150的解决方法
  3. Java 处理 Exception 的 9 个最佳实践!
  4. python学习笔记(3) -- 常用数据类型
  5. centos yum 重新配置dns
  6. php判断记录,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程
  7. Python机器学习:KNN算法08scikit-learn中的Scaler
  8. 腾讯回应“QQ 冻结”;高德上线“家人地图”惹争议;Linux 内核讨论引入 Rust 代码| 极客头条...
  9. win10的ios镜像
  10. android手机版excel怎样填充序列号,规范日期数据的极简法。Excel填充功能快速填充序号操作详解。如何制作工作日序列号填充,快速填充功能无法使用...
  11. 迈入高端市场,荣耀凭什么?
  12. 计算机里面的Profile怎么翻译比较好?
  13. 计算机主机实际功率,PC动力之源,一起来算算电源真实功率吧!
  14. 设计模式 _第五招式_建造者模式
  15. 【1.01】VBA基础
  16. vsocde vue snippet 设置
  17. Σoφoς:简单但有效的前向安全对称可搜索加密
  18. 区块链每日快讯(0116)
  19. HTML5七夕情人节表白网页制作——蓝色梦幻海洋3D相册—— HTML+CSS+JavaScript
  20. 用python对某校园热水服务app进行测试,实现自动免费用水(仅供参考)

热门文章

  1. 专科学前教育要上计算机课吗,大专学前教育主要学什么课程内容
  2. 光纤进行万兆传输时的带宽和最大距离
  3. centos9的安装
  4. 【吭】django项目运行jira项目突然报错TypeError: session() takes 1 positional argument but 2 were given
  5. 【二维码图像矫正增强】基于MATLAB的二维码图像矫正增强处理仿真
  6. 单片机ISP、IAP和ICP几种烧录方式的区别
  7. kylix3 注册机
  8. java数据库连接池满了怎么查
  9. vba做mysql前端_Excel、VBA与MySQL交互
  10. 还在被R语言中的因子factor毒打吗