1.变量
ES5 var 定义变量
可以重复定义,重复赋值,变量提升
var a //定义或声明变量
a =100; //给变量赋值
console.log(a); //100
//变量提升 var a
console.log(a); //undefiend
var a =100;
console.log(a); //100
var a = 100;
console.log(a); //100
//重复赋值
a = -100;
console.log(a); //-100
//重复定义并赋值
var a = -1000;
console.log(a); //-1000
ES6 let 定义变量
同一作用域不可以重复定义,能多次赋值 遵循:先定义 后使用原则
let a //定义或声明变量
a =100; //给变量赋值
console.log(a); //100
//无变量提升
console.log(a); //报错,停止运行
let a =100; //未运行
console.log(a); //无结果,未运行
let a = 100;
console.log(a); //100
//重复赋值
a = -100;
console.log(a); //-100
//重复定义并赋值
let a = -1000; //报错,停止运行
console.log(a); //无结果,未运行
ES6 const 定义常量
遵循:先定义 后使用原则
基本数据类型不能被重复赋值(定义常量),不会导致变量提升,
引用数据(数组 对象 函数)都可以修改
console.log(c); //报错,,停止运行
const c = "你好";
const c = "你好";
console.log(c); //你好
c = "1111"; //报错,,停止运行
console.log(c); //Assignment to constant variable. 不能给一个常量重复的赋值
2.变量的数据类型
5种基本数据类型, 1种引用(复杂)数据类型(5基1引)
检测数据类型的方法: typeof 变量名 或者 typeof( 变量)
基本数据类型:
-
ES5:
-
基本数据类型
数字类型: number
字符串类型: string
布尔类型: boolean
未定义类型: undefined
空类型: null
- 引用数据类型:
对象: object
数组: array
函数: function
Date日期
-
string 字符串
将数据描述成一句话
使用引号引起来的数据都称之为字符串
页面上用户输入的所有数据也都是字符串类型
//typeof 变量名 或者 typeof( 变量) =>检测数据的类型
let str = "我是字符串";
console.log(str,typeof str); //我是字符串 string
//给str重新赋值
str = '我是新的内容';
console.log(str, typeof str); //我是新的内容 string
number 数字
一般包含整数和小数
//typeof 变量名 或者 typeof( 变量) =>检测数据的类型
let num = 100;
console.log(num,typeof num); //100 'number'
let num1 = 100.01;
console.log(num1,typeof num1);//100.01 'number'
boolean 布尔
只有两个值: true 真 false 假
//typeof 变量名 或者 typeof( 变量) =>检测数据的类型
let a = true;
console.log(a,typeof a); //true 'boolean'
let b = false;
console.log(b,typeof b); //false 'boolean'
undefined 未定义
undefined是定义了未赋值
//typeof 变量名 或者 typeof( 变量) =>检测数据的类型
let a;
console.log(a, typeof a);//undefined 'undefined'
null 空
定义了一个值的赋值为null的空盒子
//typeof 变量名 或者 typeof( 变量) =>检测数据的类型
let a = null;
console.log(a,typeof a);//null 'object'
3.数据类型的转换
强制数据类型转换
隐式(自动)数据类型转换
强制数据类型转换
parseInt 转换为 整数
parseFloat 转换为 小数
number 转换数字
boolean 转换为布尔值
string 转换为字符串
parseInt 转换为 整数
// parseInt()//把首字符以数字开头的连续数字字符串转换成整数数据类型,不四舍五入
// 删除首字符以数字开头的连续数字后面所有字符。
// 其他的都是NAN
let a ='500元'
console.log(a*5); //结果为NaN(not a number)
console.log('a*5',a*5); //a*5 NaN
console.log('500元',parseInt(a)); //500元 500
console.log('我有100元',parseInt('我有100元')); //我有100元 NaN
console.log(100.99,parseInt(100.99)); //100.99 100
console.log('100ada300:',parseInt('100ada300')); //100ada300: 100
console.log('空',parseInt('')); //空 NaN
parseFloat 转换为 小数
// parseFloat()转换成浮点型数据类型,把首字符以数字开头的连续数字字符串转换成浮点数据类型,不四舍五入,
// 删除首字符以数字开头的连续数字后面所有字符。
// 其他的都是NaN
console.log('parseFloat 转换');
console.log('100.999元',parseFloat('100.999元')); //100.999元 100.999
console.log('100.900元',parseFloat('100.900元')); //100.900元 100.9
console.log('我有100.99元',parseFloat('我有100.99元'));//我有100.99元 NaN
console.log(100.9900,parseFloat(100.99)); //100.99 100.99
console.log('100.990ada300:' ,parseFloat('100.990ada300'));//100.990ada300: 100.99
console.log('空',parseFloat('')); //空 NaN
console.log(true ,parseFloat(true)); //true NaN
console.log(undefined ,parseFloat(undefined)); //undefined NaN
number 转换数字
// Number 转换为数字类型
// js里的假值 false 0 null underfined NaN ""
console.log(true, Number(true)); //true 1
console.log(null, Number(null)); //null 0
console.log('', Number('')); //空 0
console.log(undefined, Number(undefined)); //undefined NaN
boolean 转换为布尔值
// Boolean 转换为布尔类型
// js里的假值 false 0 null underfined NaN ""
console.log(true, Boolean(true)); //true true
console.log(null, Boolean(null)); //null false
console.log('', Boolean('')); // 空 false
console.log(undefined, Boolean(undefined)); //undefined false
string 转换为字符串
// String 转换为字符串类型
// js里的假值 false 0 null underfined NaN ""
console.log(true, String(true)); // true 'true'
console.log(null, String(null)); // null 'null'
console.log(undefined, String(undefined)); // undefined 'undefined'
隐式(自动)数据类型转换
1. 字符串与其它类型相+ , 得到的是字符串的拼接
// 1. 字符串与其它类型相+ , 得到的是字符串的拼接
let str = "5";
let num = 5;
console.log(str + num , typeof str+num); //55 string5
let bool = false;
console.log(str+bool); // 5false
let un;
console.log(str+un); //5undefined
let nu =null;
console.log(str+nu); //5null
2. 数字和字符串以外的类型进行运算
//2. 数字和字符串以外的类型进行运算
// 字符串与其它类型相- * / %, 得到的是隐式转换后的值
let num = 10;
let str = "5";
console.log(num+str);// 105
console.log(num-str, typeof num-str);//5 NaN
console.log(num*str);//50
console.log(num/str);//2
let bool = true;
console.log(num + bool); //11 true会被隐式转换为 1
console.log(num + false); //10 false 会被隐式转换为0
let un;
// undefined 不会隐式转换为0
console.log(num + un); // NaN
console.log(num - un); // NaN
let nu = null;
console.log(num + nu); //10 null会隐式转换为0
3.其它隐式转换
// 隐式转换
//js里的假值 false 0 null underfined NaN ""
console.log('' == false); //true
console.log('' == 0); //true
console.log(0 == false); //true
console.log('false' == true); //false
console.log('false' == false); //false
console.log(1 == true); //true
console.log(2 == true); //false
console.log(1 == 2); //false
console.log(1*true) // 1
console.log(2-false) // 2