JS基础1

120 阅读5分钟

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