javaScript变量

变量概述

1. 什么是变量

  • 变量是用于保存 任意值 的命名占位符

2. 如何声明变量

  • 使用 var let const 三种关键字声明变量
⚠️ var 在ECMAScript的所有版本可以使用;  
   let 和 const 在ECMAScript6以后版本使用;

3. 定义/使用变量 (var 为例子 let const 用法一致)

var message ;
// 该行代码定义了一个名为 message 的变量
// 声明变量 ==》var ; 变量名称 ==》message
var message = "hello,word"
// 1. 该行代码表示 利用var声明了一个变量 message,
// 2. 并且 message 这个变量的值为 "hello,word"

var

1. var 的重新赋值

var message = "hello,word";
console.log(message)  // 控制台打印 hello,word
    message = 100;
console.log(message)  // 控制台打印 100

// 该例子中,message 首先值为 hello,word 后又 重新赋值为 100
⚠️ "hello,wore"  ==》为字符串类型 ; 100 ==》为数组类型
        message 首先为 字符串 后又重新赋值为 数组类型
 	   虽然不推荐改变变量保存的类型,但是在ECMAScript中是有效的

2.var声明作用域

  • 函数内部声明的变量成为 局部变量
  • 函数内部或者函数外部不使用var关键字声明成为 全局变量
 function text(){
           value = "hi,web"
     var message = "hello,word"
   }
text()
console.log(value);   // 打印 : hi,web
console.log(message); // 打印 : message is not defined 
/* 原因 :
 * text()  表示一个函数
 * value   表示函数内部声明一个全局变量
 * message 表示函数内部声明一个函数内部的局部变量
 */
/* 函数内部声明变量的特点:
 * 调用函数text(),函数内部会运行,
 * 根据指令会创建message变量,并赋值hello,word
 * ❗函数调用结束后内部的变量随即销毁
 * 故会报错
 */
⚠️全局变量会成为 window 对象属性
      console.log(window.message );  // 可以获取变量值

3. 定义多个变量

var name = "张三",
    age = 18,
    found = false, 
// 声明多个变量可以在一条语句中用逗号隔开

4. var声明提升

 function foo(){
    console.log(message);
    var message = "hello,word"
  }
  foo() // 打印 undefined
/* 原因
 * 该代码执行不会报错 : 
 * ❗原因是使用 var 关键字声明变量会自动提升到函数作用域顶部
 * 代码等价于以下部分
 */
 function foo(){
   var message;
    console.log(message);
    var message = "hello,word"
  }
  foo() // 打印 undefined

let

let声明

let 声明的范围是块作用域   
块作用域表示 { } 内都表示块

let 声明特点

let age;
let age;
// 控制台报: 标识符 'age' 已被声明过
if(true){
  let age
 if(true){
  let age
 }
}
function foo(){
   console.log(message);
   let message = "hello,word"
}
foo() // 打印: 初始化之前 message 无法访问
// 在let声明之前的执行瞬间称为 “暂时性死区”
let message = "hello,word"
// 注意 :let 全局声明 也可以被局部访问,
// 			 但是同一页面不可重复声明同一全局变量

const

const的行为与let基本相同,
唯一 一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行时错误

const 特点

1. 不可以修改变量的值  
const age = 36;
  age = 26;   // 控制台报错:给常量赋值


1.1 如果const引用的的是一个对象,则可以修改对象内部的值

const person = { name : "李四" }
person.name = "张三"
console.log(person); // name: '张三'

总结

关键字变量提升块级作用域重复声明同名变量重新赋值
var×
let××
const×××
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值