JavaScript 数据类型

JavaScript 是一种弱类型脚本语言,所谓弱类型指的是定义变量时,不需要什么类型,在程序运行过程中会自动判断类型。

ECMAScript 中定义了 6 种原始类型:

  • Boolean
  • String
  • Number
  • Null
  • Undefined
  • Symbol

如果不确定一个东西的数据类型是什么,那么可以使用 typeof 方法进行判断

使用 typeof 判断数据类型
typeof true; // "boolean"
typeof 'hi'; // "string"
typeof 123; // "number"
typeof null; // "object"
typeof undefined; // "undefined"
typeof Symbol(); // "symbol"

除了原始类型,还有引用类型,上述提到的 typeof 识别出来的类型中,只有 object 和 function 是引用类型,其他都是值类型。

根据 JavaScript 中的变量类型传递方式,又分为值类型和引用类型,值类型变量包括 Boolean、String、Number、Undefined、Null,引用类型包括了 Object 类的所有,如 Date、Array、Function 等。在参数传递方式上,值类型是按值传递,引用类型是按共享传递。

原始类型

String

字符串就是一串字符,在 JavaScript 中一般是由英文单引号或者双引号包裹组成

let str = '我是字符串存在变量里';
str = "我也可以是双引号";
str = '我想说:"你好"'; // 一句话里要有引号可以外面单引号包裹着里面双引号
str = 'I\'m Conners'; // 也可以使用反斜杠转义一些符号
str = '我要换个行\n在这里换了行'; // 使用 \n 进行换行
console.log(str)

注意:可以单引号包着双引号也可以双引号包着单引号,但是不能一半单一半双,也不能双引号包着双引号或单引号包着单引号。

字符串拼接

'你好,' + '我的朋友' // "你好,我的朋友"

与其他字符串相连时使用加号拼接在一起

但是在以后内容多的时候频繁使用加号拼接和 \n 换行会非常的麻烦,这种时候可以使用模板字符串:

模板字符串
let str = `
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
`;
document.write(str);

在模板字符串里可以随意换行,在处理复杂内容时比如写一个 ul 列表保持代码缩进在阅读代码时会舒服很多。

字符串长度

如果要统计一个字符串的内容长度可以使用 String.length 属性:

let str = '在中国,Apple 通过各种方式来为中国经济、社会的发展作出贡献。创造广泛优质的就业机会,是其中非常重要的组成部分。通过中国的供应链、采购和投资等,我们带来了 300 多万个工作机会,iOS 的 App Store 生态系统支持了 180 多万个工作岗位,自从 App Store 发布以来,大中华区开发者还从中获得了 1100 多亿人民币的收益1。而这一切,仅仅是个开始。';
console.log(str.length) ; // 187

注意,字符串下标的第一位是从 0 开始的并且空格、符号这些也算在里面。

let str = '放大 App 经济,托起千千万万个梦想。';
console.log(str[0]); // '放' 使用[]下标索引的方式找到第0个是放字
console.log(str[str.length-1]); // '。' 使用 String.length-1 可以得到倒数第一个内容

另外通过下标直接修改字符串是没有效果的:

let str = '你好';
str[0] = '您';
console.log(str); // '你好'

Number

就是数字,在 JavaScript 中不区分整数型和浮点型

123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

注意:被引号包住的就是字符串而不是数字噢。

Boolean

就是布尔值,只有真(true)和假(false)两个值,主要用于选择结构的判断条件,比如判断一些事从而触发某些功能。

console.log(5 > 1); // true
console.log(3 < 1); // false

Null 和 Undefined

Null 表示空,Undefined 表示一个未定义。可以简单的理解为 Null 用来清空一个变量,Undefined 表示一个变量没有赋予值。

Undefined 是由 Null 衍生而来。

null == 0 // false
null == "" // false
null == undefined // true
null === undefined // false,因为三等是对比数据类型,他两不是一个数据类型

数据类型转换

类型转换就是将一种类型转换成另一种类型,在 JavaScript 中有隐式类型转换和显式类型转换

隐式类型转换指的是自动进行的类型转换,比如字符串和数字相加时会自动将数字转换成字符串然后相加

2017 + '1080' // '20171080' 因为此处1080是字符串

显式类型转换指的是通过一些方法手动的进行类型转换

字符串转数字

使用的方法有:

  • Number()
  • parseInt()
  • parseFloat()

Number() 是将任何「数字字符串」转成数字,比如上面例子

let i = 2017 + Number('1080');
console.log(i); // 3097

但是这种方法只能转换纯数字的字符串,如果遇上如「100px」这样数字和字符结合的就不行了

Number('1080px') // NaN

「NaN」表示 Not a Number,一般用于表达这不是一个合法的数字,除了「NaN」还有用于判断是否是数字的「isNaN」

isNaN(1080); // false
isNaN('1080'); // false
isNaN('1080px'); // true

parseInt() 是将字符串中数字部分提取出整数数字的方法

parseInt('1080px1'); // 1080
parseInt('-100'); // -100
parseInt('1010.123'); // 1010
parseInt('px1080'); // NaN
  • 如果开头是字符那么返回 NaN
  • 如果中间有英文字符那么返回到英文字符前一位
  • 如果带正负数符号,保留负数符号

parseFloat() 是将字符串中数字部分提取出浮点数数字的方法

parseFloat('1010.123px'); // 1010.123

用法和 parseInt() 一样只是保留了小数

数字转字符串

可以使用 toString()

let i = 2017;
let j = i.toString() + 100;
console.log(j); // "2017100"

或者更简单点,上面说了隐式类型转换中数字和字符串相加可以自动转成字符串,那么

let i = (2017 + "") + 100; // 加上一个空的字符串
console.log(i); // "2017100"

Conners Hua

联系方式:Email | Telegram | Telegram 群聊 | QQ 群聊

您可能还喜欢...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.