js中的变量

yizhihongxing

在JavaScript中,我们用var关键字来声明一个变量,var关键字后紧跟变量的名称,例如:

 var a1 = 40;

a1就是变量的名称,用来标识一个变量,所以它又称为变量的标识符。一个变量的标识符必须是由字母、数字、下划线组成,但首字符不能为数字,如:

1user、#user 都不是正确的标识符,而user1、_user是正确的标识符。在JavaScript开发中,标识符命名方式通常采用驼峰命名法,如:userName、userPassCode,首个字符小写, 后续每个单词的首字符大写,形似一头骆驼的驼峰。

  var a1 = 40;
  var a2;
  var a3 = "hello";
  console.log(a1,a2,a3);

在上述代码中,a1被赋值为40,而a2没有被赋值,a3被赋值为一串字符。通过console.log语句,我们可以在浏览器的控制台打印出它们的值。变量a1的值为40,变量a2因为没有被赋值,浏览器打印出 一个"undefined"值,而a3打印出"hello"的一串字符,我们称之为字符串。

变量提升

在JavaScript中,如果先使用一个变量,在后面才声明它,JavaScript解释器也不会报错,好像我们预先声明了它一样,这种现象就叫变量提升。例如:

  //变量提升
  console.log(var1)  //undefined
  var var1 = 20;
  // console.log(var2) 未定义,不能直接使用

在上述代码中,我们先使用了变量var1,后面才声明了它,并赋值为20。尽管存在变量提升的现象,但变量在使用的时候,它的值还是"undefined",其编码等价于:

  var var1;
  console.log(var1);
  var1 = 20;
  // console.log(var2)

先声明了一个变量var1,没有被赋值,然后再使用变量var1,其后再给var1赋值。最后一行var2因为没有预先声明,解释器运行到这儿会报错,它不属于变量提升的范畴。

全局变量

在函数体外通过var声明的变量都是全局变量。全局变量一旦声明后,在代码的整个作用域里都可以使用。例如:

  var var1;
  console.log(var1);
  var1 = 20;
  // console.log(var2) //error
  var var2 = "hello world!"
  //定义一个函数add
  function add(x,y){
      let result = x + y;
      return result;
  }
  console.log(var2); //显示hello world

上面声明了一个变量var2,并赋值"hello world",中间又定义了一个函数add(关于函数的使用,后面章节再详细介绍),最后打印变量var2,程序可正常执行。

一个全局变量也是window的变量。对于上述代码中的变量var1,我们也可以通过window对象,用点操作符引出var1,并使用它。如:

  var var1;
  console.log(var1);
  var1 = 20;
  console.log(var1);
  console.log(window.var1);

局部变量

在函数体内通过var声明的变量就是一个局部变量,局部变量只在函数体内有效。例如:

  var var1 = "global";
  console.log(var1);
  function local(){
      var var1="local";
      console.log(var1); //输出"local"
  }
  local();
  console.log(var1); //输出"global"
                

上面代码在函数体外申明了一个变量var1,并赋值"global",中间定义了一个函数local(),然后执行函数local,解释器输出局部变量var1地值“local”,最后一行输出全局变量var1地值“global”。

常量

常量用关键字const进行声明,常量声明并赋值后不可以再次赋值,否则解释器就会报错。例如:

      const c1 = 40;
      //c1 = 60; 常数不能再赋值
      console.log(c1);

块级作用域

变量可以用var关键字进行声明,也可以用let关键字进行声明。而let声明的变量在块作用域内有效。例如:

  console.log(var6); //打印出undefined
  {
      var var6 = 30;
      let var7 = 5;
      console.log(var6); //打印出30
      console.log(var7); //打印出5
  }
  console.log(var6); //打印出30
  //console.log(var7); 超出作用域,不能使用

变量var7在括号内部用let关键字进行声明,并赋值未5。其在括号的作用域范围了可以正常使用,在括号外面使用就会报错。

常量也只是在块级作用域里有效。

注意:全局变量实际上是绑定在window对象上地一个变量。

  var var1 = "str";
  console.log(var1);   //输出"str"
  console.log(window.var1);//输出"str"

文章同时发表在:码农编程网 欢迎访问

本节重点:

  • 变量需先声明再赋值,才可以正常使用
  • 由于JavaScript解释器存在变量提升的功能,如果我们先使用变量,接着再声明变量,解释器也有正常运行,只是这时变量的值是undefined
  • 用var声明的变量是全局变量,用let声明的变量是局部变量,他们的作用范围不一样。
  • const声明的全局变量,一旦赋值后不能被再次赋值。

原文链接:https://www.cnblogs.com/qqxz/p/17385111.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中的变量 - Python技术站

(0)
上一篇 2023年5月9日
下一篇 2023年5月9日

相关文章

  • 使用JS中的exec()方法构造正则表达式验证

    使用 JavaScript 中的 exec() 方法可以用来测试字符串是否匹配某个模式,并且可以返回匹配的结果,以及匹配的起始位置等信息。 要利用 exec() 方法构造正则表达式来验证字符串是否符合某个规则,需要按照以下步骤: 第一步:定义正则表达式 使用 RegExp 对象来指定想要匹配的模式,例如: const regEx = /\d+/; 上述代码中…

    JavaScript 2023年6月10日
    00
  • 前端面试之对安全防御的理解分析

    前言 在前端开发领域中,安全防御一直是非常重要的一个方面。因为web应用程序是非常容易受到攻击的,如果没有恰当的安全措施,可能会导致各种问题,如身份盗窃、数据泄露、远程执行代码等。 在进行前端面试时,关于安全防御的理解和分析,是一个非常常见的问题。因此,在本篇攻略中,我将从多个角度对前端安全防御进行分析和讲解,帮助大家更好地理解前端安全防御的重要性和实现方式…

    JavaScript 2023年6月10日
    00
  • JS正则表达式验证数字代码

    下面我将详细讲解 JS 正则表达式验证数字代码的完整攻略。 步骤 1. 构建正则表达式 首先需要构建一个用于验证数字的正则表达式。一般来说,数字可以包含整数和小数,还可能有正负号。 验证整数和小数的正则表达式如下: /^-?\d+(\.\d+)?$/ 其中: ^ 表示字符串开始 -? 表示可以有一个可选的负号 \d+ 表示至少一个数字 (\.\d+)? 表示…

    JavaScript 2023年6月10日
    00
  • JavaScript时间戳与时间日期间相互转换

    下面我将详细讲解“JavaScript 时间戳与时间日期间相互转换”的完整攻略。 什么是时间戳? 时间戳是用于表示时间的一种方式,它是自1970年1月1日 00:00:00 UTC到当前时间的毫秒数。JavaScript只支持精确到毫秒级别的时间戳。 时间戳的好处是可以通过它来进行时间比较或计算时间差等操作,并且可以通过时间戳在不同的设备和系统之间进行时间的…

    JavaScript 2023年5月27日
    00
  • javascript函数命名的三种方式及区别介绍

    对于“javascript函数命名的三种方式及区别介绍”,可以从以下三种方式展开讲解: 第一种方式:函数声明 使用函数声明语句来创建函数,这是最常见的一种函数命名方式,也是最容易理解的方式。 函数声明的基本结构如下: function functionName() { //函数体 } 示例: function greeting() { console.log…

    JavaScript 2023年5月27日
    00
  • Javascript中神奇的this

    Javascript中神奇的this攻略 在Javascript中,this是一个非常重要的概念。它代表了当前函数执行的上下文。但是,由于其特殊的语法规则与行为,经常会导致混乱和错误。在此,我们将讨论Javascript中神奇的this及其使用攻略。 常见的this绑定规则 在Javascript中,this的绑定有四种方法,它们分别是: 默认绑定规则:当一…

    JavaScript 2023年6月11日
    00
  • 如何通过Proxy实现JSBridge模块化封装

    下面我会详细讲解如何通过Proxy实现JSBridge模块化封装的攻略,具体步骤如下: 1. 设计JSBridge接口 首先,我们需要设计JSBridge的接口,即声明需要封装的方法、属性等,以供WebView与Native之间进行通信。 例如,我们可以声明一个名为JsBridge的对象,该对象具有两个方法callNative和callJs,实现WebVie…

    JavaScript 2023年6月10日
    00
  • JavaScript使用slice函数获取数组部分元素的方法

    获取数组部分元素是在我们日常的编程中非常常见的操作,JavaScript提供了slice()函数帮助我们实现这个功能。接下来我将为大家详细介绍slice函数的使用方法。 一、slice()函数概述 slice()函数用于获取数组的某一部分元素,它不会修改原数组,而是返回一个新的数组。slice()函数有两个参数,分别是起始索引和结束索引,其中起始索引是要获取…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部