首页 > 其他分享 >JS(一)变量与常量,作用域

JS(一)变量与常量,作用域

时间:2024-03-14 20:31:11浏览次数:11  
标签:console log 作用域 JS num var 声明 常量

JS(一)变量与常量,作用域

一变量与常量

  • 在JavaScript中,关于变量声明有三种方式:varletconst,它们之间有一些区别。

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
}
  • 这就是varletconst之间的区别。在实际开发中,推荐优先使用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代码执行之前,浏览器会默认将带varfunction声明的变量/函数进行提前的声明或定义,但赋值过程仍按照代码的上下文顺序。
  • 变量只会声明,而函数既会声明也会定义。
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
  • 总结来说,全局变量在浏览器关闭时销毁,比较占内存;而局部变量在程序运行完毁,比较节约内存。

标签:console,log,作用域,JS,num,var,声明,常量
From: https://blog.csdn.net/2302_77182979/article/details/136721125

相关文章

  • JS(二)数据类型,流程控制
    JS(二)数据类型,流程控制一数据类型将数据类型分为基础数据类型和引用数据类型。01基础数据类型包括:Number、NaN、String、undefined和Boolean。Number:表示数字类型,可以包含整型值和浮点型值。NaN:表示非数字类型,当数学计算过程中出现非Number类型时,计算结果为NaN。String......
  • JS:随机点名综合案例
    需求:1、随机点名2、不能重复出现已经被抽取的名字3、当剩下最后一个人的名字时不再抽取部分html代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0......
  • Node.js毕业设计报名系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,人们对于各种线上服务的需求日益增长。报名系统作为一项基础的在线服务,广泛应用于教育、培训、活动组织等多个领域。传统的报名方......
  • Node.js毕业设计报考意向分析系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在当前信息化社会,教育领域也紧跟时代步伐,逐渐向数字化、智能化方向发展。其中,报考意向分析系统作为一种教育辅助工具,对于学生、家长以及教育机构来说具有重......
  • json总结 fastjson和jackson 以及typereference(未写完)
    fastjson跟JackJson有很大区别,为了防止搞混,这里进行总结因为会涉及到流水线的门禁,所以这里给出比较优质的解决方案 两个测试类代码如下:@DatapublicclassStudent{privateStringname;privateIntegerage;privateTeacherteacher;}@Datapubl......
  • Chart.js绘制动态折线图
    案例1<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>动态折线图</ti......
  • vis.js使用
    案例1<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>vis.js折线图&l......
  • js怎么将服务器GMT时间转为中国标准时间
    最近遇到一个需求:antd的时间组件有个默认的时间,我们是前端自己根据电脑的系统时间newDate()来定的,newDate()的时间就是系统的时间。但是当测试人员搞事情,把系统时间改了时区,电脑日期改变,那antd组件的默认时间也会跟着变,所以这个时候就不对了,测试说应该都根据中国标准时......
  • html5&css&js代码 018颜色表
    html5&css&js代码018颜色表一、代码二、效果三、解释这段代码展示了一个基本的颜色表,方便参考使用,同时也应用了各种样式应用方式。一、代码<!DOCTYPEhtml><htmllang="zh-cn"><head><title>编程笔记html5&css&js颜色表</title><metacharset="utf......
  • java毕设jsp酒店预约管理系统毕业设计
    简介基于JavaJSP的酒店预约管理系统是一个利用Java技术和JSP页面实现的酒店在线预约平台。该系统通过简洁明了的界面,为用户提供酒店信息查询、房间预约及管理等功能,同时支持管理员对酒店及预约信息进行高效管理。采用JSP技术,使得系统具备良好的扩展性和可维护性,为用户提......