es6声明变量的方法有哪些

声明变量的方法:1、使用var命令,语法“var 变量名;”;2、使用function命令;3、使用cosnt命令,语法“const 变量名;”;4、使用let命令,语法“let 变量名”;5、使用import命令;6、使用class命令。

es6声明变量的方法有哪些

本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

ES5 只有两种声明变量的方法:var命令和function命令。

ES6 除了添加let和const命令,还有两种声明变量的方法:import命令和class命令。

所以,ES6 一共有 6 种声明变量的方法。

(1) var命令

var a ;  //undefinedvar b = 1;

登录后复制var定义的变量可以修改,如果不初始化会输出undefined,不会报错var 声明的变量在window上,用let或者const去声明变量,这个变量不会被放到window上很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域,因此用var声明的变量具有变量提升的效果var 声明的变量作用域是全局的或者是函数级的

(2)function命令 

function add(a) {  var sum = a + 1;  return sum;}

登录后复制声明了一个名为 add的新变量,并为其分配了一个函数定义{}之间的内容被分配给了 add函数内部的代码不会被执行,只是存储在变量中以备将来使用

(3) cosnt命令

const a;     //报错,必须初始化const b = 1;

登录后复制const定义的变量不可以修改,而且必须初始化该变量是个全局变量,或者是模块内的全局变量如果一个变量只有在声明时才被赋值一次,永远不会在其它的代码行里被重新赋值,那么应该使用const,但是该变量的初始值有可能在未来会被调整(常变量)创建一个只读常量,在不同浏览器上表现为不可修改;建议申明后不修改;拥有块级作用域const 代表一个值的常量索引 ,也就是说,变量名字在内存中的指针不能够改变,但是指向这个变量的值可能 改变const定义的变量不可修改,一般在require一个模块的时候用或者定义一些全局常量

可以在全局作用域或者函数内声明常量,但是必须初始化常量

常量不能和它所在作用域内其它变量或者函数拥有相同名称

(4) let命令

let a;  //undefinedlet b = 1; function add(b) {  let sum = b + 1;  return sum;}let c = add(b);

登录后复制 需要”javascript 严格模式”:’use strict’;不存在变量提升不允许重复声明let声明的变量作用域是在块级域中,函数内部使用let定义后,对函数外部无影响(块级作用域)可以在声明变量时为变量赋值,默认值为undefined,也可以稍后在脚本中给变量赋值,在生命前无法使用(暂时死区)

(5) import命令

1、ES6引入了自己的模块系统。通过export导出,import导入。

2、与CommonJS不同的是,它是获取模块的引用,到用的时候才会真正的去取值。

3、例如js中:

  let student = [    {      name: 'xiaoming',      age: 21,    },    {      name: 'xiaohong',      age: 18    }  ]  export default student; // 这种导出方式,你可以在import时指定它的名称。

登录后复制

4、在app.js中我们就可以这样用:

  import StudentList from './student.js'; //指定名称  console.log(StudentList[0].name); //xiaoming

登录后复制

(6) class命令

1:class作为es6的语法糖,实际上es5也可以实现的。

  class Point {    constructor (x, y) {      this.x = x;      this.y = y;    }    toString () {      return this.x + ',' + this.y;    }  }

登录后复制

//上面是一个类  Object.assign(Point.prototype, {    getX () {      return this.x;    },    getY () {      return this.y;    }  })  let p1 = new Point(1,2);  console.log(p1.toString()); //1,2  console.log(p1.getX()); //1  console.log(p1.getY()); //2  console.log(Object.keys(Point.prototype)); // ["getX", "getY"]

登录后复制

方法之间不需要逗号分隔

toString () {} 等价于 toString: function () {}

你仍然可以使用Point.prototype

你可以用Object.assign()一次性扩展很多方法

类内部定义方法多是不可以枚举的

constructor(){}是一个默认方法,如果没有添加,会自动添加一个空的。

constructor默认返回实例对象(this),完全可以指定返回其他的对象。

必须用new调用

不存在变量提升

当用一个变量去接受class时,可以省略classname

es6不提供私有方法。

2:使用extends继承

class ThreeDPoint extends Point {    constructor (x, y, z) {      console.log(new.target); //ThreeDPoint      super(x, y);      this.z = z;}    toString () {      return super.toString() + ',' + this.z;    }    static getInfo() {      console.log('static method');    }    get z() {      return 4;    }    set z(value) {      console.log(value);    }}  ThreeDPoint.getInfo(); // "static method"  let ta = new ThreeDPoint(2,3,4);  console.log(ta.toString()); //2,3,4  console.log(ta.z); // 4  ta.z = 200; // 200  console.log(Object.getPrototypeOf(ThreeDPoint)); //Point

登录后复制

constructor中必须调用super,因为子类中没有this,必须从父类中继承。

子类的__proto__属性总是指向父类

子类的prototype属性的__proto__总是指向父类的prototype

Object.getPrototypeOf()获取父类

super作为方法只能在constructor中

super作为属性指向父类的prototype.

在constructor中使用super.x = 2,实际上this.x = 2;但是读取super.x时,又变成了父类.prototype.x。

原生构造函数是无法继承的。

get set 方法可以对属性的赋值和读取进行拦截

(静态方法不能被实例继承。通过static声明

静态属性只能 ThreeDPoint.name = “123” 声明 (与static没什么关系)

【推荐学习:javascript高级教程】

以上就是es6声明变量的方法有哪些的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2947270.html

(0)
上一篇 2025年3月11日 22:53:49
下一篇 2025年3月11日 19:22:57

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javascript如何添加框

    javascript添加框的方法:1、新建一个html文件;2、使用div创建一个模块;3、在css标签内通过id定义div的样式;4、创建一个按钮;5、在js标签内创建addBorder()函数即可。 本文操作环境:windows7系统、…

    2025年3月11日 编程技术
    200
  • javascript中window.$是什么意思

    javascript中window.$的意思是把window对象传入这个匿名函数中,并且同时执行这个函数,在页面载入之前就执行。 本文操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。 javascrip…

    2025年3月11日
    200
  • es6中的es是什么意思

    es6中的es全称ECMAScript,指的是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言,是一种可以在宿主环境中执行计算并能操作可计算对象的基于对象的程序设计语言。 本教程操作环境:windows7系统、ECMAScri…

    2025年3月11日
    200
  • es6 some方法是干什么的

    es6 some()方法是用来检测数组中是否存在符合指定条件的元素,存在就返回true,不存在就返回false;换个角度,也可用来检测数组中的所有元素是否都不符合指定条件,都不符合则返回false,有一个或者多个符合则返回true。 本教程…

    2025年3月11日
    200
  • es6属于什么编程

    es6属于前端编程,因为ES6全称是ECMAScript 6.0 ,是JavaScript的下一个版本标准;而JavaScript就是前端开发语言,经常与html、css技术一起构成前端开发。 本文操作环境:windows7系统、ECMAS…

    2025年3月11日
    200
  • javascript和c语言的区别有哪些

    区别:1、C语言主要是被编译成机器语言,JavaScript主要是作为脚本被解释器解释执行;2、C语言需要程序员手动管理内存,JS的内存是由解释器来管理的;3、C语言是静态类型语言,JS是动态类型语言;4、C语言中没有闭包的概念,JS中有。…

    2025年3月11日
    200
  • Safari浏览器里关闭javascript

    Safari里关闭javascript的方法:1、打开Safari浏览器;2、在菜单栏中点击“Safari浏览器”;3、在打开的菜单列表中,点击“偏好设置”;4、选择“安全性”选项卡,取消勾选“启用JavaScript”选项即可。 本教程操…

    2025年3月11日 编程技术
    200
  • javascript怎么设置元素的height(高度)

    设置方法:1、使用“document.getElementById(“id值”)”语句获取指定元素对象;2、使用“元素对象.style.height=”值””或“元素对象.style.cssT…

    2025年3月11日
    200
  • javascript中什么是类

    在javascript中,类是一种用户定义类型,也称类类型,是一个具有相同属性和行为的群体的集合;从es6开始,可通过创建class关键字来定义一个类的模板,例“class 类名{}”。 本教程操作环境:windows7系统、javascr…

    2025年3月11日
    200
  • vuejs需要js基础吗

    vuejs需要js基础。Vue是一套用于构建用户界面的渐进式JavaScript框架,在学习Vue.js之前,需要具有基础的前端知识,要先学习好HTML,CSS,Javascript(js、ES6、ES5)等知识。 本教程操作环境:wind…

    2025年3月11日
    200

发表回复

登录后才能评论