JavaScript 变量的命名和作用域

本文详细介绍了JavaScript中的变量定义、命名规范,包括变量的命名规则、驼峰命名法以及var、let、const的区别。同时,深入探讨了变量的作用域,包括全局变量和局部变量的特性和示例,以及如何通过闭包访问局部变量。通过习题练习,帮助读者巩固全局变量和局部变量的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本内容是对JS变量进行的一个简单总结:
例如:如何定义变量,变量的类型有哪些,变量的作用域等等,主要总结变量的命名和作用域


提示:以下是本篇文章正文内容,下面案例可供参考

一、变量的定义及命名

1. 变量的定义

其实就是在内存里面申请一个合适的空间,用于存放对应的数据

2. 变量的命名

2.1 思维导图

2.2 举例

代码如下(示例):

示例1:(变量名 = 值)(变量名前常使用定义变量的关键字,如var、let、conset,其中conset常定义常量)

        // 示例1:定义数字型变量
        var num1 = 100
        // typeof关键字,用于返回变量的类型
        console.log(num1,typeof num1) //结果:100 "number"
        num2 = 55.55
        console.log(num2,typeof num2);//结果:55.55 "number"
        // 注意:在js中,整数和浮点数的类型都是number

补充var、let、conset区别

var:变量名可以重复定义,后面的会顶掉前面的;会提升到全局作用域的顶部统一定义;

let:定义的变量不能重名;不会提升到全局作用域的顶部统一定义

conset:用于定义常量 常量在定义的时候必须要赋值,并且之后不能再修改值

示例2:驼峰命名法

// 示例2:驼峰命名法(示例中给获取的dom添加样式时使用)
let show = document.querySelector('#show')
//backgroundColor即驼峰命名法,第一个单词首字母小写其他大写
show.style.backgroundColor = 'red'

示例3:命名规则

        // 示例3 命名规则
        // 变量名中,只能使用:字母、数字、_、$ 这些字符
        var $name_3 = '张三'

        // 数字不能开头
        // var 1name = '赵四'  

        // 多个单词组成的变量名,要使用驼峰命名法
        var myFirstName = '赵'

        // 不能使用js中的关键字
        // var if = 10 

二、变量作用域

1.全局变量

代码如下(示例):

        // 全局变量
        var age=20
        function showage(){
            age=18
        }
        showage()
        console.log(age);

 在上述代码中,函数体外的age和函数体内的age都是全局变量,只是定义的方式不同,由于执行顺序的原因,后者将自动覆盖前者,所以输出值为18

2.局部变量

与全局变量不同,局部变量只能在函数体内定义,并且必须使用var关键字,否则定义的就是全局变量

代码如下(示例):

        // 局部变量
        function shownewage(){
            // 输出无定义的变量
            console.log(newage);//undefined
            // 定义局部变量并赋值
            var newage=18
            // 再次输出变量
            console.log(newage);
        }
        shownewage()
        // 外部直接输出局部变量
        console.log(newage);//报错

在上述代码中,第一次输出newage变量时因为还未定义该变量,所以输出结果是undefined;当在函数体内使用var定义了一个名称为newage的局部变量时,第二次输出的是该局部变量的赋值

由于newage是一个函数体内定义的局部变量,因此,即使在函数体外执行了变量定义的函数,也无法访问这个局部变量,因此当外部直接输出局部变量时返回的是变量未定义的错误信息

如果需要在函数体外部访问,则需要使用闭包的形式

3.习题练习

3.1习题1

简单了解全局变量和局部变量后,做一道简单习题巩固下,先看下面一段代码,它输出的值会是什么呢?

        console.log(a)
        var a = 12   
        function fn() {
            console.log(a)
            var a = 13  
        }
        fn()
        console.log(a)   

代码解析:

var定义变量会提升到作用域的顶部统一定义,所以以上代码相当于:

        var a
        console.log(a);
        a=12
        function fn(){
            var a
            console.log(a);
            a=13
        }
        fn()
        console.log(a);//这里的a是全局作用域里面的a

不难看出,第一个var定义的变量a提升到全局作用域的顶部定义了,第二个var定义的变量a提升到函数体顶部定义了,先在顶部定义变量,再赋值,所以结果应为:undefined ;undefined ;12

3.2 习题2

再看一题,先看下面一段代码,它输出的值又会是什么呢?

        console.log(a)
        var a = 12
        function fn() {
            console.log(a)
            a = 13
        }
        fn()
        console.log(a)

代码解析:第一个var定义的变量a提升到全局作用域的顶部定义同习题1,外层作用域里的a为12,当执行函数方法时,函数体里先输出外层作用域里a为12的值,接着执行a=13(此处的a没有加任何关键字,该变量不会提升),覆盖了外层作用里的a,此时a为13,以上代码相当于:

        var a
        console.log(a);
        a=12
        function fn(){
            console.log(a);
            a=13
        }
        fn()
        console.log(a);

所以结果应为:undefined;12;13


总结

以上就是此次的一点小总结,浅显基础,可以结合函数的调用,回调函数、递归函数等做些提升的题目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值