起源
JavaScript是Netscape公司的程序员Brendan Eich发明的一门语言。为了给新推出的Navigator浏览器提供交互功能,Netscape雇佣了Brendan来为这个浏览器设计一门脚本语言。Brendan的主要方向是函数式编程,而Netscape的管理层希望这门语言参考Java。因此一门同时具有面向对象编程风格 和函数式编程风格 的混搭式语言诞生了。
JavaScript基础
数据类型
JavaScript有8种数据类型,分别是:数值number
、字符串string
、布尔bool
、符号symbol
、空null
、空undefined
、对象object
、BigInt
(2020年新增)。
数值number
JavaScript内部,所有数字都是以64位浮点数形式储存,整数也是如此。数值可以以整数、小数、科学计数法、八进制、十六进制、二进制等形式书写。
以下是一些特殊的数值:
+0
和-0
,JavaScript 的64位浮点数之中,有一个二进制位是符号位,因此存在2个0。正0和负0是等价的。NaN
,表示不是一个数字(Not-A-Number)。主要出现在将字符串解析成数字出错的场合。NaN
通过运算符(==
、!=
、===
、以及!==
)和任何变量比较的结果都是false
,包括它自己。要比较的话,需要用 Number.isNaN() 或 isNaN()函数。
0 / 0
的结果是NaN
。
Infinity
,表示无穷大,有正负之分。1 / 0
的结果是Infinity
,1 / (-0)
的结果是-Infinity
。
字符串 string
JavaScript每个字符固定占2个字节。
JavaScript提供了与Base64
相关的全局方法:
window.btoa // 正常字符串转为Base64编码 |
这两个方法只适合ASCII
码的字符,要将非 ASCII
码字符转为 Base64
编码,必须中间插入一个转码环节,再使用这两个方法。
布尔值 boolean
JavaScript有5个falsy
值(相当于false
但是又不是false
的值,通常在if判断时使用):
undefined |
空undefined 和null
undefined
和null
都可以表示“没有”。区别是undefined
侧重于表示“没有定义”,而null
侧重于表示“空”。null
转为数值时为0,undefined
转为数值时为NaN
。
undefined
一些典型应用场景:
如果一个变量声明了,但是没有赋值,默认是
undefined
如果一个函数,没有写return语句,那么默认return
undefined
对象 object
JavaScript中的对象是花括号包裹的键值对,如:
let obj = { |
JavaScript中,函数、数组也是对象 。
变量声明
JavaScript声明变量有以下方式:
使用var
关键字
var
关键字已经不推荐使用。var的特点是:
- 没有块级作用域:用
var
声明的变量,不是函数作用域就是全局作用域。代码块对它无效。 - 允许重新声明:用
var
声明一个变量,如果再用var
声明,不会报错。用let
的话会报错。 - 存在变量提升:
var
声明的变量,可以在其声明语句前被使用。
使用let
关键字
let a = 1 |
规则:
- 遵循块作用域
使用范围不能超过定义的{}
{ |
- 不能重复声明
指同一作用域下不能有两个名字相同的let声明。
let a = 1 |
可以赋值,也可以不赋值
必须先声明再使用
全局声明的
let
变量,不会变成window
的属性说明:全局声明的
var
变量会挂到window
上
使用const
关键字
const
的规则和let
几乎一样。
只有一条不一样:声明时就要赋值,赋值后不能改。请注意,如果const
声明的变量是基本类型,那么变量的值不能改;如果声明的变量是对象,那么对象的引用不能改(该变量不能指向另一个对象)。
参考
Author: kpt
Permalink: http://kpt.ink/2021/08/01/JavaScript-Data-Types/
文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。