[ JavaScript ] - 二、什么是变量?

[ JavaScript ] - 二、什么是变量?

Fcuntion

function abs(x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

上述abs()函数的定义如下:

  • function指出这是一个函数定义;
  • abs是函数的名称;
  • (x)括号内列出函数的参数,多个参数以,分隔;
  • { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。

请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined

由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量。

引用自廖雪峰网站

不难看出,这里的abs作为函数名,它也是一个变量名。

显然可以得知,**function**也可以有前文所说三个变量相同的功能:声明变量

注意,function声明会提升,也会初始化。

import

import { 导出的变量 } from '单独细小的模块';

导入模块。在大型项目里,我们经常将业务划分为细小的模块,在需要的地方去进行调用。

模块内部会导出一个个变量,在使用import时,这里“导出的变量”其实就是“单独细小的模块”内部导出的变量。

但是不可否认,import的作用当中包含了声明一个变量

注意,import声明会提升,也会初始化。

class

首先,我们要确定,class类是什么?

这个直接打印一下就好了

class User {
  constructor(name) { this.name = name; }
}
console.log(typeof User); // => function;

从结果上看,JavaScript中的class类是一个函数。

在这个类里面,class构造做了这个事情:创建一个名为 User 的函数,该函数成为类声明的结果。

引用自现在JavaScript教程

那么可以确定,class具备声明一个变量的功能

let p = new Rectangle(); // ReferenceError

class Rectangle {}

经过试验,在class声明前调用会直接报错,包括打印。

注意,class声明不会提升,没有初始化。

Incredible results

结果有点难以置信,在JavaScript声明变量领域当中,开发者总是认为只有let、const、let这三种。

function、import、class虽然在开发过程当中随手可得,不会那么刻意的去关注;但很明显,现在开发者们声明变量的方式不再是认知当中是三种了,包含es6JavaScript声明变量的方式应该是6种。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×