变量、数据类型
一、变量
(变量可以用它保存任何类型的数据。)
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)内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。


浙公网安备 33010602011771号