ES6的学习之路---(一)变量的声明

先简单的回顾一下在ES5里面的变量的声明:

1> var + 变量名

 

  var test = "test";    //全局变量 
  function funOne(){ 
    var a = 3;    //局部变量 
    alert(a); 
  } 
  function funTwo(){ 
    alert(test); 
  } 

这里面test就是全局变量,a就是局部变量。

 

2> 没有使用var标示,直接给变量赋值,会默认这个变量为全局变量,例如:

 

test = "hello";

function foo(){
    console.log(test);
}

foo();    //运行结果:“hello”

在上面的代码中,隐式的声明了全局变量test,所以才在foo方法中能访问变量test.

 

3> 使用window全局对象来什么变量,这样的变量都是全局变量;

 

window.test = "hello 3";    //全局变量
function foo(){
    console.log(test); 
}

foo();

上面的几种方法中,1,3是显示声明变量,2是隐式声明变量。

 

注意:

(1)全局变量变量保存在静态存储区,程序开始时就分配内存,结束时才释放内存,所以生命周期长;局部变量是动态分配,动态释放。所以,要合理声明变量,

减少不必要的开销,避免重复定义变量,覆盖先前定义的变量的危险。;

(2)当我们使用一个未声明的变量会报错,但是我们给一个未声明的变量赋值的话,不会报错,会隐式的声明一个全局变量。这点要注意;

(3)注意变量的生命周期:全局变量会在程序结束后被释放,局部变量在函数运行后被释放。

(4)变量声明提升:JavaScript引擎在运行的时候,会把所有的变量申明,提升到当前作用域的最顶部,函数的申明也会提升。举个简单的例子:

 

var test = "hello"; 
function foo(){
       console.log("test");    //undefined
       var test = "world"
}
foo();

上面的代码,执行foo函数会打印出undefined。这是因为在函数里申明了局部变量,遮盖了全局作用变量test。局部变量test的申明会被提升的函数作用域的最前面,也就是:

 

 

var test = "hello"; 
function foo(){
       var test;
       console.log("test");    //undefined
       test = "world"
}
foo();

(5)申明,定义,初始化:申明是宣称这个变量名字的存在,定义是给这个变量名分配存储空间,初始化是给名字分配的存储空间赋值。

 

 

var test;                 //申明
test = "hello JS";    //定义并且赋值

(6)JS没有块级作用域
 

 

ES6

一、let命令

es6新增了let命令用来申明变量,和var类似,但是let申明的变量只在let命令所在的代码块内有效。

{
    var a = "hello";
    let b = "world";
}

console.log(a);    //"hello"
console.log(b);    //ReferenceError: b is not defined

用var和let申明的变量a,b。b报错,表明let申明的变量只在它所在的代码块中有效,这里的代码块即"{ }"中的代码。

使用let申明变量的时候需要注意以下几个问题:

(1)不存在变量提升:var申明的变量,在声明前使用不会报错,变量值为undefined,let申明的变量,在声明前使用,会报错(ReferenceError)

(2)暂时性死区:如果在区块中使用let或const,这个区块就对这些命令申明的变量形成封闭作用域,凡是在声明前使用这些变量都会报错。

(3)不允许重复申明:不允许在同一个作用域内,重复申明同一个变量,也不能在函数内部,重复申明参数第二次,后面会报错。

(4)块级作用域:let实际上位javaScript提供了块级作用域,块级作用域本质上是一个语句,将多个操作封装到一起,没有返回值,在块级作用域前加上do,可使其变为do表达式,会返回这个块级作用域的返回值。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值