Skip to content

JS数据类型

JS语法规范

js
----------------------
HTML中 设置元素的 id 使用小驼峰,设置 类名 时使用短横线-

如果在html中设置自定义属性名为标准形式`data-home-address=""`,则在JS语法中使用属性名就不需要带 `data-`前缀,`data-`后的`home-address`中的"-",会自动映射成小驼峰的形式,`imgEle.dataset.homeAddress;`

----------------
JS中变量使用小驼峰的格式,
构造函数的变量名推荐使用首字母大写的方式。
对象中的属性名使用"",如果是小驼峰的形式可以省略""

JavaScript 概述

① 什么是 JavaScript

JavaScript 是一门动态的弱类型的,解释型的,基于对象脚本语言。

动态: 程序执行的时候才会确定数据类型。 静态: 书写代码的时候提前确定数据类型。

弱类型: 数据类型可以自动转换。 强类型: 数据类型无法自动转换。

解释型: 边编译,边运行,开发效率更高。 编译型: 边编译,边运行,开发效率更高。

**脚本:**一般都是可以嵌在其它计算机语言当中执行。

② javaScript 的运行环境(解释器)

1. 浏览器,如Chrome浏览器中的V8引擎
2. Node.js

③ 浏览器端的 JavaScript 组成部分

1. 基本代码语法, ECMAScript,ECMA指定
2. BOM, 浏览器提供的API,W3C指定
3. DOM, 文档提供的API,W3C指定

JavaScript 基本语法

JavaScript 在 HTML 中使用的三种方式

① 行内式(内联脚本)

html
<元素 onclick="代码.." ondblclick="代码.."></元素>

② 内嵌式(嵌入脚本)

html
<script>
    代码
</script>
css
script标签写在页面的任何位置都会执行到,建议写在其他所有元素的后面

③ 外链式(外部脚本)

html
<script src="js文件的地址"></script>
css
script标签写在页面的任何位置都会执行到,建议写在其他所有元素的后面

JavaScript 注释

js
// 单行注释
alert('OK');
alert('你好'); // 注释本行后面的部分


/*
    多行注释
    alert(100);
    alert(100);
    alert(100);
    alert(100);
    alert(100);
*/

JavaScript 的其他语法特点

1. 指令结束符(语句结束符)是分号或者换行
2. 严格区分大小写

JavaScript 中输出内容

① 输出到弹框

js
alert(内容)

② 输出到页面中

js
document.write(内容)

③ 输出到控制台

js
console.log(内容)

变量

数据、直接量、变量

数据:

直接量: 直接表示数据的方式,如 250hello 等。

变量: 将数据取个名字,通过该名字就可以使用数据。

变量的意义

1. 通过变量方便某个数据的多次使用
2. 通过变量保证数据的一致性

变量的语法

js
// 创建一个变量 声明一个变量 使用关键字 var
var num01;
// 给变量赋值  在使用变量 使用变量不需要var
num01 = 250;

// 创建变量并赋值
var num02 = 500;
// 修改变量的值 给变量重新赋值
num02 = 600;
// 将 num02 的值赋值给 num01
num01 = num02;
js
1. 使用没有值的变量,可以自动得到 undefined
2. 使用不存在的变量,报错!因为本身就没有,如果是window.变量形式,这样的方式使用对象的属性,使用不存在的属性,报undefined,因为对象window是存在的。

变量名的命名规范(标识符的命名规范)

① 强制规范

1. 变量名可以由数字、字母、下划线、$ 组成且不能以数字开头
2. 变量名不能是关键字或保留字

② 建议规范

1. 请使用有意义的词语作为变量名
2. 变量名如果多个词语组成,建议使用小驼峰命名法
js
小驼峰命名法
  - 首字母小写,每一个单词的开头字母大写
  - maxlength --> maxLength
  - 基本结构:xxxYyyZzz
  - JS变量名通常都会使用小驼峰

大驼峰命名法
  - 首字母大写,每一个单词的开头字母大写
  - maxLength --> MaxLength
  - 基本结构:XxxYyyZzz
  - 大驼峰用于类名的设置

帕斯卡命名法
- 所有的字母都小写,单词之间使用_隔开
- maxlength --> max_length
- 基本结构:xxx_yyy_zzz
- 在JS中使用的并不常见

数据类型

数据类型的划分

① 原始类型(基本类型)

number		数字
string		字符串
boolean		布尔
null		空
undefined	未定义

② 对象类型(复合类型)

array		数组
function	函数
object		对象
date		日期
...

判断数据的类型

js
typeof(数据)

number 数值类型

① 整型

js
764;   // 十进制表示
012;   // 八进制表示     只能用于表示整数
0x12;  // 十六进制表示    只能用于表示整数

② 浮点型

浮点数的运算存在精度问题:

js
0.1 + 0.2;    // 0.30000000000000004

③ 科学计数法

js
1.3e4; 	 // 13000
1.67e78;
2.3e-2   // 0.023;

④ NaN

1. 什么是 NaN  
   NaN,全称 Not a Number,是 number 类型的一种

2. NaN 的特点
   1.1 NaN 与任何数字进行任何计算结果都是 NaN
   1.2 NaN 与任何数字都不相等,包括自己

3. isNaN() 函数 
   如果要判断的数据是NaN或者转为number的时候能转成NaN,结果就是true

⑤ JavaScript 中数字的有效范围

1. JS 中能表示的最大的数字:  1.7976931348623157e+308
2. JS 中能表示的最小的正数:  5e-324
3. 如果超出有效范围,用 Infinity、-Infinity 表示
4. 函数 isFinite() 可以判断一个数字是否是有效数字,如果是有效数字结果是true
   无效数字: Infinity、-Infinity、NaN

string 字符串类型

① 字符串的表示方式

js
// 需要使用单引号或双引号表示字符串的直接量
// 单引号定义的字符串内容中不要有单引号,双引号定义的字符串内容中不要有双引号
var msg01 = 'Hello"高小乐';
var msg02 = "你好'老头乐";

② 转义字符

\n			换行
\'			单引号
\"			双引号
\\			转义\本身
\uXXXX 		四位十六进制表示unicode字符串

boolean 布尔类型

true		表示是、肯定、正确
false		表示否、否定、错误

null 和 undefined

null			空,如果创建了一个变量,暂时不知道赋什么值,可以先赋值null
undefiend		未定义,没有赋值的变量在使用的时候会自动得到undefined

数据类型转换

数据类型转换的规则

① 其他类型转为 number 类型

js
其他类型数据转为数值类, 使用Number()函数
    字符串:  纯数字字符串转为对应数字、空字符串转为0, 其他都是NaN
    布尔值: true->1  false->0
    null: 转为 0
    undefined: 转为 NaN

其他类型数据转为数值类, 使用parseInt()和parseFloat函数
    用于从字符串中提取数字,其他类型的数据都是转为NaN
    以数字开头或者纯数字,可用从字符串中提取数字部分;
    空字符转为NaN
    parseInt获取小数点之后,提取整数;parseFloat提取浮点数

string 转为 number:

js
1, 纯数字字符串转为对应的数字,如 '12.23''0xab''2.2e2'
2. 空字符串转为 0
3. 其他形式的字符串转为 NaN 表示一种状态。

字符串转number之前,会自动去掉两端所有的空格!取掉空格之后剩下的内容再转。

boolean 转为 number:

true -> 1
false -> 0

undefined 转为 number:

转为 NaN

null 转为 number:

转为 0

② 其他类型转为 string 类型

js
数据是什么样转为字符串,变为字符串中的内容

数字转为字符串: 原样转换, 十六机制和科学计数法表示的数字转换后是十进制的数字
其他类型,原样转换输出

③ 其他类型转为 boolean 类型

js
数字转为布尔值: 0转为false;其他都是true
字符串转为布尔值:  空字符串转为false, 其他都是true
null 转为 flase
undefined 转为 false

number -> boolean:

1. 0、NaN 转为 false
2. 其他数字都转为 true

string -> boolean:

1. 空字符转为 false
2. 其他字符串转为 true

字符串转 boolean 的时候,不会去掉两端的空格!

undefined -> boolean:

转为 false

null -> boolean:

转为 false

强制类型转换(显示转换)

① 强制把其他类型转为 number 类型的函数

Number()
parseInt()			提取字符串中的数字的整数部分
parseFloat()	    提取字符串中的数字

parseInt()、parseFloat() 与 Number() 的区别:

1. parseInt()、parseFloat() 如果不是字符串,全部转为 NaN
2. parseInt()、parseFloat() 纯数字字符串、以数字开头的字符串转为有效数字

parseFloat() 和 parseInt 的区别:

parseInt()			提取字符串中的数字的整数部分
parseFloat()	    提取字符串中的数字

可以使用 parseInt 来提取数字中的整数部分!

② 强制把其他类型转为 string 类型的函数

String()

③ 强制把其他类型转为 boolean 类型的函数

Boolean();

自动类型转换(隐式转换)

1. 如果数据不是当前运算环境所需要的类型,就会发生数据类型自动转换,转换规则与强制类型转换一致
2. 当前运算环境一般由运算符决定


JavaScript 是弱类型语言,所以可以进行自动类型转换。

在某种运算环境下,数据自动转换类型:

数值的运算环境,  表达式中有数字运算符: + - * / % ++ --
字符串的运算环境, 表达式中有+,且一边是字符串, 另外边的数据肯定自动转为字符串
布尔值的运算环境, 条件判断的时候 if (数据)  数据会自动转为布尔值
自动类型转换的规则同强制类型转换的规则是一致的。

prompt数据类型转换

var num = +prompt('请输入一个数');prompt前加+能把变量转化为数字型

js
// 获取相关元素
var input01 = document.querySelector('#input01');
var input02 = document.querySelector('#input02');
var btn = document.querySelector('#btn');
var resBox = document.querySelector('#res');

// 创建子线程  子线程的代码会执行
var worker = new Worker('./child.js');

// 点击计算按钮 向子线程发送数据
btn.onclick = function() {
    // 定义向子线程发送的数据 ‘+’ String 自动转换为 Number
    var nums = [+input01.value, +input02.value] 
    // 向子线发送数据
    worker.postMessage(nums);
};