变量、数据类型

一、变量

(变量可以用它保存任何类型的数据。)

1.var关键字

(定义变量:关键词+变量名)

var msg;   //定义一个名为msg的变量

var msg='hi';   // msg被定义为保存'hi'的变量

// var 声明提升
function foo(){
console.log(num);
var num=10;
}
foo();   //10

//“提升”,就是变量会自动提升到函数作用域的顶部

2.let 声明

 let和var的区别:

1)let 声明的范围是块作用域,var声明的范围是函数作用域

if(true){                                                
var age=10; 
console.log(age);//10 
}
console.log(age);//10 

if(true){
let age=10;
console.log(age);//10
}
console.log(age);// ReferenceError: age is not defined

 

2)var、let 混用,声明相同的变量名会报错

var text; //SyntaxError
let text; //SyntaxError,冗余声明报错

3)let声明的变量不会在作用域中被提升

console.log(age);
let age=10;//ReferenceError,没有定义

4)let在全局作用域中声明的变量不会成为window对象的属性()

var age=10;
console.log(window.age);//10

let name='aha';
console.log(window.name);//undefined

5)在for循环中,使用var会使循环定义的迭代变量渗透到循环体外

for(var i=0;i<4;i++){

}
console.log(i);//5

for(let i=0;i<4;i++){

}
console.log(i);//ReferenceError,未定义

3.const声明

const声明和let大体相同,区别:

const car ={};
car.color='red'; //声明的变量是一个对象,可以修改这个对象的内部属性

for(const i=0;i<10;i++){} //TypeError,不能声明迭代变量

二、数据类型

1.“undefined”类型表示未定义   值:undefined;

2.null类型  空  值:null;  null是表示一个空对象指针,这也是typeof操作符检测 null 值时会返回 object 的原因。

3.boolean类型 两个字面量值:true,false

值区分大小写,True,False为标识符。

4.number类型  ,表示数据的整数和浮点数

特殊值:NaN   isNaN()函数,接受参数判断这个参数是否“不是数值”

数值转换:parseInt()函数,字符串是否包含数值模式,识别不同的整数格式。

let num1=parseInt(""); //NaN
let num2=parseInt("125");//125
let num3=parseInt("OXA");//十六进制  

5.string()类型

特点:字符串是不可变的,要修改某个变量中的字符串,必须销毁原始的字符串。

tostring()方法转换为字符串。其中,null和undefined值没有tostring()方法。

6.symbol类型

符号是原始值,用途:确保对象属性使用唯一标识。

symbol()函数,

let sym=Symbol('foo');
console.log(sym);  //Symbol(foo),传入字符串参数

7.object类型

数组与功能的集合。

let o=new object();//创建对象

 三、栈和堆与基本数据类型和引用数据类型的关系

栈(heap)和堆(stack)、引用类型

 栈:先进后出;动态分配的空间。

 堆:队列优先,先进先出;由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

 引用类型:即存放在堆(heap)内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。

posted @ 2021-09-26 08:56  陌菡  阅读(103)  评论(0)    收藏  举报