JavaScript变量的定义关键字

变量

一.var关键字
var message;//定义了message变量,可用来保存任何值
1.var声明作用域
使用var操作符定义的变量会成为它的函数的局部变量。例如:

function test(){
    var message="hi";//局部变量
}
test();
console.log(message);//出错

解析:message变量是函数内部使用var定义的。调用函数,会创建这个变量并给他赋值。调用之后变量就会被销毁。但是在函数内定义变量时省略var操作符,可以创建一个全局变量。

function test(){
    message="hi";//全局变量
}
test();
console.log(message);//控制台输出"hi"

注意:虽然可通过省略var操作符定义全局变量,但不推荐这样。在严格模式下,如果像这样给未声明的变量赋值,会抛出ReferenceError。

定义多个变量:

var message="hi",
    found=false,
    age=29;
    /*
        在严格模式下这样会导致语法错误。
    */

2.var声明提升

function foo(){
    console.log(age);
    var age = 26'
}
foo();//输出undefined
/*
使用关键字声明的变量会自动提升到函数作用域顶部
*/

使用var反复声明同一个变量是不会报错的

var a=1;
var a=3;
var a=4;

二.let关键字
let和var作用差不多,但有着很重要的区别是,let声明的范围是块作用域,var声明的是函数作用域。

if(true){
    var name='matt';
    conlose.log(name);//输出matt
}
console.log(name);//matt;
if(true){
    let age=26;
    comsole.log(age);//26
}
console.log(age);//ReferebceError:age没有定义

let不能再同一个块作用域出现重复声明。会导致报错

let age;
let age;//SyntaxError;标识符age已经声明过了

1.let与var的另一个区别,let声明的变量不会再作用域提升

//name会被提升
console.log(name);//undefined
var name='matt';
//age不会被提升
console.log(age);//ReferenceError:age没有定义
let age=26;

2.全局说明,使用let在全局作用域中声明的变量不会成为window对象的属性(var变量则会)

var name='matt';
console.log((window.name);//'matt'
let age=20;
console.log(window.age);//undefined

3.在顶级域中不能声明两次

<script> 
  var name='zz';
  let age='12';
  console.log(name);//zz
  console.log(age);//12
</script>
<script>
  var name='ee';
  let age=12;
  console.log(name);//ee
  console.log(age);//报错
  /*
    因为let的作用域是块,
    所以不可能检查前面是否已经使用let声明过同名变量,
    同时也就不可能在没有声明的情况下声明它

三const声明
const与let差不多相同,唯一的区别就是声明变量时必须同时初始化变量,且尝试修改const声明的变量会报错。

const age=36;
age=16;//报错TypeError:给常量赋值
const name='mt';
const name='mz';//SyntaxError,不允许重复定义

注意在一下实例中不报错:

const name='z';
console.log(name);//z
{
    const name='x';
    console.log(name);//x;
}
//let定义也是一样的
let a=2;
console.log(a);//2
{
    let a=3;
    console.log(a);//3
}

const作用域也是块。
不允许重复定义。
注意const声明限制只适用于它指向的变量的引用。假如引用的是一个对象,修改对象内部的属性并不会违反const的限制。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值