js中的变量

在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日

相关文章

  • 一文了解你不知道的JavaScript生成器篇

    一文了解你不知道的JavaScript生成器篇 简介 JavaScript的生成器(Generator)是ES6新引入的一个特性,可以使我们更加方便地控制异步代码流程,使代码更加简洁易懂。本文将介绍JavaScript生成器的基本语法、使用方法及示例,以帮助开发者快速掌握这一特性。 生成器语法 生成器语法使用function*定义一个生成器函数,通过yiel…

    JavaScript 2023年5月28日
    00
  • js简单网速测试方法完整实例

    JS简单网速测试方法完整实例攻略 什么是JS网速测试? 前端开发中,有时需要在页面中进行网速测试,来提高用户体验和网站性能。简单的JS测速方法有利于快速获取用户端网速信息。 JS简单网速测试方法 JS网速测试可以通过多种方法实现,以下是其中一种简单的实现方式。 1. 初始化定义 在JS文件中定义以下变量: let testImg, startTime, en…

    JavaScript 2023年6月10日
    00
  • 每天一篇javascript学习小结(面向对象编程)

    关于“每天一篇javascript学习小结(面向对象编程)”的完整攻略,我来给你详细讲解一下。 攻略概述 在学习面向对象编程的过程中,我们需要掌握以下知识点: 对象的创建 原型和原型链 类和继承 ES6类的写法 在每天的学习小结中,我们需要围绕上述知识点展开学习,并且需要编写实际的代码来加深对于知识点的理解和掌握。 学习步骤 下面是一个比较详细的“每天一篇j…

    JavaScript 2023年5月27日
    00
  • JavaScript File API文件上传预览

    下面是关于“JavaScript File API文件上传预览”的完整攻略。 什么是JavaScript File API文件上传预览? JavaScript File API 文件上传预览是浏览器API之一,主要用于在浏览器中的上传文件操作中,可以通过JavaScript获取文件内容并展示到网页上,给用户更加直观的展示效果。 实现文件上传预览的步骤 1. …

    JavaScript 2023年5月27日
    00
  • js读取本地文件的实例

    下面是详细的讲解和示例说明。 什么是读取本地文件的实例? 在网页中,我们有时需要读取本地的文件,比如图片、音频、视频等等。而JavaScript是不允许直接访问本地文件系统的,因为这会给用户的计算机带来安全隐患。但是,如果我们得到了用户选择的文件,那么我们就可以通过操作这个文件对象来读取它的内容。 如何读取本地文件? 前提条件:用户选择了文件 我们可以通过以…

    JavaScript 2023年5月27日
    00
  • js实现复制功能(多种方法集合)

    JS实现复制功能(多种方法集合) 复制(Copy)功能指的是将一个文本或者图片等资源从一个位置通过“复制”的方式再次拷贝到另一个位置,被复制的资源不会在原位置上被删除或移动,只是将其拷贝到了新的位置,从而实现了重复利用资源的目的。 在Web前端开发中,复制功能也是很常见的一个需求,如点击时自动复制某段文本、在表单中粘贴内容等功能。本文将介绍几种实现复制功能的…

    JavaScript 2023年6月11日
    00
  • Javascript中window.name属性详解

    让我给您详细讲解一下 “Javascript中window.name属性详解”。 什么是window.name属性? 在JavaScript中,window是指向浏览器窗口的全局对象,其中name是window对象的一个属性。window.name属性是一个字符串,通常用于存储窗口名称或标识符,它的值可以跨越页面重载和跨域名保持不变。 window.name…

    JavaScript 2023年6月11日
    00
  • 用 js 写一个 js 解释器过程详解

    题目要求讲解如何用 JavaScript 编写一个 JavaScript 解释器,实现类似浏览器中解析 JavaScript 代码并执行的功能。该解释器可以用于学习 JavaScript 内部工作原理和进一步理解编程语言的本质。 下面是实现一个基本 JavaScript 解释器的完整攻略: 1. 了解 JavaScript 的词法与语法规则 实现一个 Jav…

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