文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

javascript声明变量的方法有哪些

2023-06-14 09:46

关注

这篇文章将为大家详细讲解有关javascript声明变量的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

javascript声明变量的4种方法:1、使用“var”声明变量,例“var a;”;2、使用“function”声明变量,例“function Fun (num) {}”;3、使用“let”声明变量;4、使用“const”声明变量。

声明变量的方式

JavaScript 变量声明的方式有下面几种:

function 是一种声明变量的方式?

我们来验证一下

验证方法一:

    function repeatFun (num) {      return num;    }    repeatFun(10); // 10    var repeatFun = 1;    repeatFun(2); // Uncaught TypeError: repeatFun is not a function

这种方法是利用 var可以重复声明变量,但是会后者覆盖会覆盖前者的特点

我们来看看这里发生来什么事:

根据执行结果我们可以推断出在浏览器的内存中存在一个 repeatFun 变量,之前是一个函数,后来被一个 var 关键字重新声明并初识化为 1。

验证方法二:

    {      let repeatFun = 1;      function repeatFun (num) {        return num      }    }    // Uncaught SyntaxError: Identifier 'repeatFun' has already been declared

第二种方法我是利用

ES6的一个语法:利用 let 不能重复声明的特性来证明 function 也是一种声明变量的方式


var ,let , const 的不同点:


变量声明提升

例子一,验证 var 变量提升:

var b = a + 1; // b: NaN var a = 1; // a: 1

首先是先声明来一个变量 b 并进行初识化,初始化的值为 a + 1(a 的值是多少?)
然后紧接是声明了一个变量 a ,初识化为 1
这是代码表面上就是做着这些事,实际上做的事情是这样:

下面写法同样可以实现一样的效果

var b;var a;b = a +1; // b: NaN a = 1; // a: 1

let 和 const 则与 var 的表现则不同

例子二,验证 let 是否存在变量提升:

let b = a + 1; // Uncaught ReferenceError: a is not definedlet a = 1;

在运行的时候直接抛出范围错误,若这样改一下,就没有错误:

let a = 1; // a: 1let b = a + 1; // b: 2

const 和 let在变量提升方面的表现是一致


重复声明


作用域的范围

封装一个阶乘函数来举例,没有使用尾递归,就是使用 for 和 if 的搭配实现
例子一,阶乘函数验证作用域域范围:

  var num = 5;  function factorial(num) {      var result = 1,resultValue = 0;      for (let i = num - 1; i >= 1; i--) {        if (i === num - 1) {          resultValue = num * i;        }else{          resultValue = num * i / num;        }        result *= resultValue;      }      // i 是用 let 进行定义它的作用域仅仅被限制在 for 循环的区域内      // i++;// Uncaught ReferenceError: i is not defined      return result;  }  // result 是用 var 进行定义,他的活动区域在 factorial 函数内  // result++; // var的作用域.html:34 Uncaught ReferenceError: result is not defined  factorial(num); // 120

const 和 let 在作用域的范围的表现也是一样

例子二,验证 const 的作用域:

  {    const NUM_1 = 10;  }  let b = NUM_1 + 1;  // Uncaught ReferenceError: NUM_1 is not defined

例子三,验证 var 可以定义全局变量,let 和 const 只能定义局部变量

  // 可以挂载到全局作用域上  // var name = 'window scoped';  let name = 'let scoped'; //是不挂载到全局作用域中  let obj = {    name: 'myName',    sayName () {       return function () {        console.log(this.name); // 打印出来为空      };    }  }  obj.sayName()();  console.log(window); //name 这个属性的值没有,如下图

javascript声明变量的方法有哪些

若这样改一下就可以得到我们想要的值:

这个同时也涉及到新问题 this 的指向。后面的文章再详细举例验证


const 的特殊之处

const 与 let , var 其实还是有些地方不一样的

例子1:验证 const 的特殊之处(一)

const NUM = 100;  NUM = 1000; // Uncaught TypeError: Assignment to constant variable

但是也有例外

例子二:验证 const 的特殊之处(二)

  const obj = {    name: 'xiaoMing',    sayName () {      return this.name    }  };  obj.sayName(); // xiaoMing  obj.name = 'xiaoHong';  obj.sayName(); // xiaoHong

若这样改一下:
例子三:验证 const 的特殊之处(三)

  const obj = {    name:'xiaoMing',    sayName(){      return this.name    }  };  obj = {}; // Uncaught TypeError: Assignment to constant variable

关于“javascript声明变量的方法有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯