一 、javascript的变量
-
存储在内存中的带有名称的数据信息, 其中存储的数据信息在程序的执行过程中是可以改变的
简言之: 存储在内存中 带有名称 存储数据可以改变
-
变量就是一个容器(存储数据的容器) ,这个容器有名称 , 容器中的存储的数据可以改变
-
在计算机程序中, 数据是不能独立的存在 , 必须有存储数据的容器 , 就是变量
(html语言中,input等标签 name属性的属性值 就是 存储标签数据的容器) -
定义变量 同时赋值存储的数据
var 变量名称 = 表达式 ; var int = 100;
var
关键词 js定义的带有具体功能的英文单词
(告诉 计算机程序 正在声明和定义的是一个 变量)
定义变量时使用 ,调用执行变量时不需要使用
变量名称
规则:(必须遵守的)
1, 严格区分大小写
2, 只能使用 英文 ,数字 , 下划线 , $ (其中$不推荐使用)
3, 不要使用保留词 关键词
规范: (建议遵守的 )
1, 见名起义 即一看变量名称就是知道存储的是什么数据
2, 推荐使用小驼峰命名法定义
就是除第一个单词以外 其他单词首字符大写
例如:
username --- userName
=
和数学中的等于完全不同,
= 赋值符号 将右侧表达式的执行结果 赋值给 左侧变量存储
表达式
所谓的表达式就是具有具体数值数据的公式或者数值
分号
JavaScript程序最好使用分号结束
重复赋值:
对一个变量进行重复赋值, 后赋值的数据会覆盖之前赋值的数据 ,变量最终存储的是 最后一次赋值的数据.
var int = 100;
int = 200;
//结果是 200
二 、数据类型的分类
javascript数据类型:
计算机程序中按照数据的存储方式将数据分为不同的数据类型, 不同的计算机程序 数据类型的分类不同.
JavaScript数据类型的分类:
简单数据类型(基本数据类型):
布尔类型
数值类型
字符串类型
null
undefined
复杂数据类型(引用数据类型):
函数
数组
对象
布尔类型 (boolean / bool)
用于比较判断的执行结果,只有两个数值 true / false 。
-
true 真 (正确)
-
false 假 (错误)
注意说明: 这里的true和false 此时既不表示一个英文单词,也不是关键词, 只是一种 数值数据
字符串类型(string / str)
-
一串由数字, 字母, 下划线等内容组成的数值数据
-
必须使用定界符(’’ “” ``)包裹.
单引号, 双引号, 反引号的区别: 单引号和双引号没有区别 反引号可以通过${} 来解析变量,单引号和双引号不能 反引号可以换行,单引号和双引号不能
-
所有的定界符中不能嵌套定界符本身
字符串中变量的输出:
- 单引号, 双引号中不能解析变量
- 输入的变量名称不会解析其中存储的数据数值, 只会输出变量名称的文字字符解决方法: 1, ES6之前的语法形式 字符串拼接 方法: 使用 + 拼接字符串和变量 (就是将变量中存储的数据数值和字符串内容进行拼接,生成字符串和数值数据的内容) 2, ES6新增语法形式 `` 模板字符串 在模板字符串中使用${} 来包裹 变量 就可以解析变量
综上所述,:
1、 字符串一定要有定界符
2、 有了定界符后,不管什么内容都是字符串
3、 单引号双引号没有区别,它俩都不能解析变量,不能换行, 要解析变量需要使用 + 来拼接字符串 和 变量
4、 反引号的模板字符串ES6新增的语法形式 串${变量}串
来解析变量.它可以换行
<script>
var str = "当前日期2021年d月d日";
var d = 5;
//语法拼接形式 串 + 串
document.write('当前日期2021年'+ d +'月d日');
document.write('当前日期2021年'+ d +'月'+ d +'日');
//${}方法
document.write(
`当前日期2021年${d}月${d}日`
);
</script>
数值类型
整数 int (正整数 0 负整数)
其他进制整数的存储和输出语法:
1, 不管是什么进制的整数,输出都按照十进制数值输出, 也就是即使存储的数值是十六进制,也会转化为十进制数值输出
2, 其他进制整数的存储语法形式:
二进制 数值前添加0b / 0B
0 1
八进制 数值前添加0o / 0O
0 1 2 3 4 5 6 7
十进制 直接存储
0 1 2 3 4 5 6 7 8 9
十六进制 数值前添加0x /0X
0 1 2 3 4 5 6 7 8 9 a b c d e f
3, 按照指定的进制输出数值
变量.toString(进制)
- 将变量中存储的数值转化为指定的进制输出 ,进制的范围是2-36
浮点数 (float)
就是数学中的小数.
注意:
1, 浮点数的有效数值在计算机程序中 浮点整数部分 + 小数部分 最多 17位.
2, 浮点数的误差/精度丢失 (在直接参与运算时,一定会出现误差,实际项目中,浮点数要参与运算或者比较时,一定要做一些特殊的处理)
3, 科学计数法 (是一种表示数字的方式)
使用科学技术法表示的数值都按照浮点数计算
2e3 意思是 2乘以10的3次方
(使用科学计数法表示的数值一定按照浮点数处理)
NaN
表示当前数值的数据类型是数值类型,但是不是一个具体的数字.
注意:
1, 有NaN参与的运算,结果就一定是NaN.
2, 两个NaN比较判断 结果一定是 不相等.
undefined
undefined 是 JavaScript定义的一种数据类型
没有正确赋值的变量, JavaScript 会自动赋值 , undefined是没有赋值的结果,本质上是错误的语法操作.
null
给变量赋值的空值
null和undefined 都可以作为数值直接赋值给变量
三 、数据类型的转化
- JavaScript 是 弱类型的计算机语言,对于变量存储数据的数据类型没有限制要求, 也就是一个变量中可以存储任意的数据类型。
- 计算机程序执行过程中,执行某些程序时 需要 指定的数据类型参与程序的执行,需要将当前变量储存的数据类型转化为指定的数据类型.
数据类型转化的方式:
自动转化 — 计算机程序自动完成的数据类型转化
-
1\ 其他类型转化为字符串:
什么时候触发自动转化? 字符串拼接时,触发其他数据类型自动转化为字符串(字符串拼接,理论上只能字符串和字符串进行拼接操作,其他类型和字符串拼接的时候,其他类型自动转化为字符串进行拼接) 转化原则是什么? 将变量中存储的数据转化为对应的字符串内容。 (简单理解:写什么拼什么)
-
2\ 其他类型转化为数值类型:
什么时候触发自动转化? 算数运算时 转化原则? 转化为 0 (变量值为 false null '' ' ') 转化为 1 ( 变量值为 true ) 转化为对应的数字 ( 变量值为 符合数字语法规范的字符串) NaN (变量值为 不符合数字语法规范的字符串.)
-
3\ 其他类型转化为boolean类型:
什么时候触发自动转化? if语句 switch 三元运算 转化原则: false ( 变量值为 0 '' false null undefined NaN) true (变量值为 其他情况都转化为true) ' '是true
强制转化 —程序员人为进行的数据类型转化
-
1/ 强制转化为布尔类型
Boolean( 变量 /表达式); 转化原则和自动转化为布尔类型的原则完全相同 false (值为: 0 0.000 '' NaN null undefined ) true (其他情况都转化为true) Boolean() 不会改变变量中存储的原始数据
-
2/ 强制转化为字符串类型
String(变量/表达式); 转化的原则与自动转化字符串的原则相同 不会改变变量中存储的原始数据 变量.toString(进制); 如果变量存储的是整数数值,可以设定转化的进制 进制范围: 2~36 变量如果存储的是null / undefined,不支持 变量/表达式 + ''
-
3/ 强制转化为数值类型
Number() 转化原则和自动原则完全相同 不会改变变量存储的原始数值 转化为1 Number(true); 转化为0 Number(false); Number(''); Number(null); Number(' '); 转化为NaN (不符合数字规范的字符串) Number(undefined); Number('100a'); Number('a100'); 转化为对应的数值 (符合数字规范的字符串) Number('100'); Number('100.123'); Number('2e3'); parseInt() 获取整数部分 (从左起获取整数部分, 如果左起第一个字符不符合整数语法规范 , 结果是NaN) 不会改变变量储存的原始数值 console.log( parseInt( true ) ) ; console.log( parseInt( false ) ) ; console.log( parseInt( undefined ) ) ; console.log( parseInt( null )) ; 结果都是NaN parseFloat() 获取浮点数部分 (从左起获取浮点数部分, 如果左起第一个字符不符合浮点数语法规范 , 结果是NaN) 不会改变变量储存的原始数据
四、 数据类型的判断
-
typeof( 变量/表达式) 或者 typeof 变量/表达式
用于判断变量/表达式的数据类型。 它用于判断数据类型不是非常准确。 null [数组] {对象} 判断结果都是 object
typeof ( typeof (变量/ 表达式) )
执行结果是字符串类型,
也就是先对内层typeof(变量/表达式)的结果, 再判断这个结果的数据类型
所以结果是字符串 -
isNaN( 变量/表达式)
— 判断 变量/表达式 存储的数据是不是NaN
如果存储的是NaN, 结果为true
如果存储的不是NaN, 结果为false