web前端从零开始系列-05-Javascript数据类型(上)

熟悉Javascript数据类型,相关函数的使用

  • 数据类型概述。
  • null 和 undefined 布尔值
  • 数值
  • 字符串
  • 对象
  • 函数
  • 数组
数据类型概述:
  1. 数值(number):整数和小数(比如1和3.14)
  2. 字符串(string):文本(比如Hello World)。
  3. 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
  4. undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  5. null:表示空值,即此处的值为空。
  6. 对象(object):各种值组成的集合。 三个子集:狭义的对象,数组,函数
  7. Symbol: ES6 又新增了第七种 Symbol 类型的值(后续讲)
JavaScript 有三种方法,确定一个值的类型。
  • typeof运算符
  • instanceof运算符
  • Object.prototype.toString方法

typeof使用

typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"

function f() {}
typeof f    // "function"

typeof undefined // "undefined"

v   // ReferenceError: v is not defined
typeof v    // "undefined"

typeof window // "object"
typeof {} // "object"
typeof [] // "object"

var o = {};
var a = [];

o instanceof Array // false
a instanceof Array // true

typeof null // "object"
判断语句需注意
// 错误的写法
if (v) {
  // ...
}
// ReferenceError: v is not defined

// 正确的写法
if (typeof v === "undefined") {
  // ...
}
null 和 undefined 布尔值

两者含义神似,语法效果几乎无异,自动转为false,相等运算符(==)甚至直接报告两者相等。

null表示空值,即该处的值现在为空。

undefined表示“未定义”,下面是返回undefined的典型场景。

// 变量声明了,但没有赋值
var i;
i // undefined

// 调用函数时,应该提供的参数没有提供,该参数等于 undefined
function f(x) {
  return x;
}
f() // undefined

// 对象没有赋值的属性
var  o = new Object();
o.p // undefined

// 函数没有返回值时,默认返回 undefined
function f() {}
f() // undefined
布尔值

实际项目中布尔值 通常用于流程控制

会返回布尔值的运算符

  • 前置逻辑运算符: ! (Not)
  • 相等运算符:===,!==,==,!=
  • 比较运算符:>,>=,<,<=

预期布尔值 转换false情况:

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""或''(空字符串)

除此六种之外 都是true。注意,空数组([])和空对象({})对应的布尔值,都是true。

数值/数值/数值

文字太多 代码来解释

整数和浮点数
1 === 1.0 // true

0.1 + 0.2 === 0.3
// false

0.3 / 0.1
// 2.9999999999999996

(0.3 - 0.2) === (0.2 - 0.1)
// false
数值精度保证范围
  • 53个二进制位(绝对值小于2的53次方的整数,即-253到253)
  • 15位的十进制数

数值表示范围

Number.MAX_VALUE // 1.7976931348623157e+308
Number.MIN_VALUE // 5e-324

一个数大于等于2的1024次方,正向溢出 返回Infinity

一个数小于等于2的-1075次方,负向溢出 返回 0

数值进制:

  • 十进制:没有前导0的数值。
  • 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
  • 十六进制:有前缀0x或0X的数值。
  • 二进制:有前缀0b或0B的数值。 八进制 十六进制 二进制 出现不属于该进制的数字,就会报错

特殊数值

正零和负零

-0 === +0 // true
0 === -0 // true
0 === +0 // true

+0 // 0
-0 // 0
(-0).toString() // '0'
(+0).toString() // '0'

(1 / +0) === (1 / -0) // false

NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number)

5 - 'x' // NaN
Math.acos(2) // NaN
0 / 0 // NaN
typeof NaN // 'number'
NaN === NaN // false
[NaN].indexOf(NaN) // -1
Boolean(NaN) // false
  • NaN与任何数(包括它自己)的运算,得到的都是NaN。
  • Infinity有正负之分,Infinity表示正的无穷,-Infinity表示负的无穷。
  • parseInt()用于将字符串转为整数
  • parseFloat()用于将一个字符串转为浮点数。
  • isNaN()可以用来判断一个值是否为NaN。
  • isFinite()返回一个布尔值,表示某个值是否为正常的数值。
字符串/字符串/字符串
  • 字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
  • 字符串默认只能写在一行内,分成多行将会报错。
  • 长字符串必须分成多行,可以在每一行的尾部使用反斜杠。

字符串可以被视为字符数组,但无法改变字符串之中的单个字符。

var s = 'hello';
s[0] // "h"
s[1] // "e"
s[4] // "o"

// 直接对字符串使用方括号运算符   超过字符串长度返回undefined
'hello'[1] // "e"

length属性返回字符串的长度,该属性也是无法改变的。

JavaScript 原生提供两个 Base64 相关的方法。

  • btoa():任意值转为 Base64 编码
  • atob():Base64 编码转为原来的值

以上学习整理于 阮一峰教程 更详细内容可直接访问

彼特城博客
请先登录后发表评论
  • latest comments
  • 总共0条评论