目录
数据类型简介
1.1为什么需要数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大不同的数据,充分利用存储空间,于是定义了不同的数据类型。
简单来说,数据类型就是数据的类别型号。比如姓名“张三”,年龄18, 这些数据的类型是不一样的。
1.2变量的数据类型
变量是用来存储值的所在处,它们有名字和数据类型。量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。
JavaScript 是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
var age = 10;
//这是一一个数字型
var areYouOk = '是的"; // 这是一个字符串
在代码运行时,变量的数据类型是由JS引擎根据=右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型。
JavaScript拥有动态类型,同时也意味着相同的变量可用作不同的类型:
varx= 6;
//x为数字
var X = "Bill";
//x为字符串
数字型Number
数字型进制
最常见的进制有 二进制、八进制、十进制、十六进制。
// 1.八进制数字序列范围: 0~7
var num1 = 07;//对应十进制的7
var num3 = 010;//对应十进制的8
//2.十六进制数字序列范围: 0~9以及 A~F(分别代表10~15)
var num = 0xA; (对应10)
现阶段我们只需要记住,在JS中八进制前面加0 ,十六进制前面加0x
2.数字型范围
JavaScript中数值的最大和最小值
alert (Number .MAX_ VALUE); // 1. 7976931348 623157e+308
alert (Number .MIN VALUE); // 5e-324
●最大值: Number.MAX_ VALUE ,这个值为: 1.7976931348623157e+308
●最小值: Number.MIN VALUE ,这个值为: 5e-32
数字型三个特殊值
alert (Infinity); // Infinity
alert(- Infinity); // - Infinity
alert (NaN) ; // NaN
● Infinity , 代表无穷大,大于任何数值
● -Infinity ,代表无穷小,小于任何数值
● NaN,Not a number,代表一个非数值
isNaN
字符串型String
字符串型可以是引号中的 任意文本 ,其语法为 双引号"" 和单引号 ‘ ’
var strMsg = "我爱北京天安门~"; // 使用双引号表示字符串
var strMsg2 = ' 我爱吃猪蹄~'; // 使用单引号表示字符串
//常见错误
var strMsg3 =我爱大肘子; // 报错, 没使用引号,会被认为是js代码 ,但j s没有这些语法
因为HTML标签里面的属性使用的是双引号
JS这里我们更推荐使用单引号。
字符串引号嵌套
JS可以用单引号嵌套双引号,或者用双引号嵌套单引号(外双内单,外单内双)
var strMsg = '我是"高帅富”程序猿'; // 可以用' '包含"” var strMsg2 = "我是'高帅富'程序猿"; // 也可以用""包含” //常见错误 var badQuotes = 'What on earth?"; //报错,不能单双引号搭配
字符串转义字符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。 转义符都是\开头的,常用的转义符及其说明如下:
字符串拼接
●多个字符串之间可以使用 + 进行拼接,其拼接方式为字符串+任何类型=拼接之后的新字符串
●拼接前会把与字符串相加的任何类型转成字符串 ,再拼接成一个新的字符串
//1.1字符串"相加"
alert('hello' + ' ' + 'world') ; // hello world
//1.2数值字符串"相加" !
alert('100' + '100') ; // 100100
//1.3数值字符串+数值
alert('11' + 12) ;
// 1112
aler(11+22);//33
+ 号总结口诀:数值相加,字符相连最常用的字符串拼接:字符串 + 变量
var age = 18; console.log("我的年龄是" + age); //变量不能加引号,否则就变成字符串了//我的年龄是18
Boolean
布尔类型有两个值: true和false ,其中true表示真(对) ,而false表示假(错)。
布尔型和数字型相加的时候,true 的值为1 , false 的值为0。
console.log(true + 1) ;// 2 console.log(false + 1); // 1
Undefined
一个声明后没有被赋值的变量会有一个默认值 undefined (如果进行相连或者相加时,注意结果)
var variable; console.log (variable);// undefined console.log('你好' + variable); // 你好undefined console.log(11 + variable) ;//NaN
Null
一个声明变量给null值,里面存的值为空(学习对象时, 我们继续研究nulI)
var vari = null;
console.log('你好' + vari); // 你好null
console.log(11 + vari) ; // 11
console.log(true + vari); // 1
获取变量的数据类型
使用 typeof() 运算符来获取变量的数据类型
var a = 10; var b = "我是字符串" var c = true var d = undefined var e = null //??? console.log(typeof a); //console.log(typeof(a)); 此写法也可
数据类型的转换
-
为什么需要数据类型转化
使用表单、prompt 获取过来的数据默认是 字符串类型 的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是根据需求把一种数据类型的变量转换成另外一种数据类型。
-
转换为字符串
方式 说明 案例 toString() 转成字符串 var num= 1; alert(num.toString()); String()强制转换 转成字符串 var num = 1; alert(String(num)); 加号拼接字符串 和字符串拼接,结果都是字符串 var num= 1; alert(num+“我是字符串"); -
toString() 和String()使用方式不一样。
-
三种转换方式,我们更喜欢用第三种加号拼接字符串转换方式,这一种方式也称之为隐式转换。
-
-
转换为数字类型(重点)
方式 说明 案例 parselnt(string)函数 将string类型转成整数数值型 parselnt('78') parseFloat(string)函数 将string类型转成浮点数数值型 parseFloat('78.21') Number()强制转换函数 将string类型转换为数值型 Number('12') js隐式转换(- * /) // 不能用+ 利用算术运算隐式转换为数值型 '12'- 0 -
注意parselnt和parseFloat单词的大小写,这2个是重点
-
隐式转换是我们在进行算数运算的时候, JS自动转换了数据类型
-
- 转换为布尔型
方式 | 说明 | 案例 |
Boolean() 函数 | 其他类型转成布尔值 | Boolean('true'); |
●代表空、否定的值会被转换为false, 如 " ''、0、NaN、 null、 undefined
●其余值都会被转换为true
console. log (Boolean('''')) ; // false
console. log (Boolean(0)); // false
console. log (Boolean(NaN)); // false
console. log (Boolean (null)) ; // false
console. log (Boolean (undefined) ); // false
console .1og (Boolean('小白')); // true
console. log (Boolean(12)) ; // true
算术运算符概述
概念:算术运算使用的符号,用于执行两个变量或值的算术运算。
运算符 | 描述 | 实例 |
+ | 加 | 10+ 20= 30 |
- | 减 | 10- 20=-10 |
* | 乘 | 10* 20= 200 |
/ | 除 | 10/ 20=0.5 |
% | 取余数(取模) | 返回除法的余数 9%2= 1 |
浮点数的精度问题
浮点数值的最高精度是17位小数,但在进行算术计算时其精确度远远不如整数。
var result = 0.1 + 0.2;
//结果不是0.3 ,而是: 0.30000000000000004
console.log(0.07*100) ;
//结果不是7,而是: 7.00000000000001
所以:不要直接判断两个浮点数是否相等!
比较运算符
逻辑运算符概述
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。
后面开发中经常用于多个条件的判断
逻辑运算符 | 说明 | 案例 |
&& | “逻辑与",简称"与”and | true && false |
|| | “逻辑或",简称"或”or | true|| false |
! | “逻辑非",简称“非”not | ! true |
短路运算(逻辑中断)
短路运算的原理:
当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;
逻辑与
●语法:表达式1 &&表达式2
●如果第一个表达式的值为真,则返回表达式2 //可以返回数值,不只是返回true、false
●如果第一个表达式的值为假,则返回表达式1
逻辑或
●语法:表达式1|1表达式2
●如果第一个表达式的值为真 ,则返回表达式1
●如果第一个表达式的值为假 ,则返回表达式2
console.log( 123 | | 456 ) ; // 123
console.log( 0 | |456); // 456
console.log(123||456||789); //123
赋值运算符
运算符优先级(重点)