JS(一)变量与常量,作用域
JS(一)变量与常量,作用域
一变量与常量
- 在JavaScript中,关于变量声明有三种方式:
var
、let
和const
,它们之间有一些区别。
01 var
- 存在变量提升的问题,即变量可以在声明之前被访问。
- 没有块级作用域,只有全局作用域和函数作用域。
var num = 0;
console.log(num); // 输出: 0
var num; // 可以重复声明
02 let
- 没有变量提升,存在暂时性死区,必须先声明后使用。
- 具有块级作用域,只在块级作用域内有效。
let num = 0;
console.log(num); // 输出: 0
// console.log(num); // 报错,暂时性死区
// let num = 1; // 重复声明会报错
{
let num = 1;
console.log(num); // 输出: 1
}
03 const
- 声明常量,一旦赋值就不能再修改。
- 具有块级作用域,同样存在暂时性死区。
const num = 0;
// num = 1; // 尝试修改常量会报错
console.log(num); // 输出: 0
// const num; // 声明时必须赋值,否则报错
{
const num = 1;
console.log(num); // 输出: 1
}
- 这就是
var
、let
和const
之间的区别。在实际开发中,推荐优先使用const
来声明常量,只有在需要修改变量值的情况下才考虑使用let
二作用域
- 在JavaScript中,作用域是指变量和函数的可访问性的范围。
01 局部作用域
- 在函数内部声明的变量或函数属于局部作用域。
- 只能在该函数内部获取到。
function fn() {
var str = "局部作用域的字符串";
// 作用域内使用
console.log(str);
var print = function () {
console.log("局部作用域的函数");
}
print();
}
fn();
// console.log(str); // 无法在外部访问
// print(); // 无法在外部调用
02 全局作用域
- 在
<script>
标签或.js
文件中声明的变量或函数属于全局作用域。 - 可以在任意位置访问,包括局部作用域。
var num = 10;
function fn() {
console.log("局部作用域中访问", num);
}
console.log("全局作用域中", num);
fn();
03 预解析(变量提升)
- 在当前作用域中,JavaScript代码执行之前,浏览器会默认将带
var
和function
声明的变量/函数进行提前的声明或定义,但赋值过程仍按照代码的上下文顺序。 - 变量只会声明,而函数既会声明也会定义。
console.log(num); // 输出: undefined
var num = 0;
console.log(num); // 输出: 0
var sum = 0;
function sum(){
console.log(1 + 1);
}
console.log(sum); // 输出: 0
sum(); // TypeError: sum is not a function
- 总结来说,全局变量在浏览器关闭时销毁,比较占内存;而局部变量在程序运行完毁,比较节约内存。
原文地址:https://blog.csdn.net/2302_77182979/article/details/136721125
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!