变量 6个月前

编程语言
850
变量

Javascript变量

变量,源于数学中的能存储计算结果的概念

对于计算机编程,变量就是内存中的一块可以存储值的区域,这块区域有名字

变量有名字,变量可以存储值 ,如下图

image

声明变量

在 Javascript 中使用 var 关键字来声明变量

如下示例:

var age = 23;        //声明变量 age

console.log(age);    // 输出:23

上面代码可知:

  1. 使用 var 关键字声明了一个变量,名字叫 age
  2. 同时给变量赋值为 23
  3. 使用 console.log() 函数输出变量的值
  4. // 后面的是注释,代码在执行过程中会被忽略

变量赋值

使用 = 给变量赋值,如上面的示例,把 23 赋值给了变量age

再来看一个示例:

var str = "www.helloworld.net" ;     //声明变量 str, 并赋值为 www.helloworld.net

console.log(str);    //输出 : www.helloworld.net

由上可知:字符串必须使用双引号引起来。也可以使用单引号

变量的命名规范

变量命名规范必须是以字母下划线 _ , 美元符号 $ 开头 , 并且区分大小写

下面是一些变量的名字的示例

//合法的名字
var age;
var Age;     //和 age 是两个不同的变量
var _name;
var $book;
var loginTime;


//不合法的名字
var 23Age;
var num+aa;
var count@11;

变量的其它知识

1 变量的默认值

变量在声明的时候,如果没有赋值,则变量就会有一个默认值 undefined

var count;    

console.log(count);     //输出:undefined

2 声明多个变量

使用 var 声明多个变量时,需要用逗号, 分隔

示例:

var a = 1 , b = 2 , c = 3;    //同时声明a ,b ,c 三个变量

3 变量在 window 上

在最外层声明的变量,实际上是 window 对象的一个属性(在浏览器环境下)

示例:

count = 100;

console.log(count);
console.log(window.count);

//输出:
100
100

常量

常量就是定义之后,值不能再被修改的变量。比如配置信息,一些枚举值等,都可以写成常量

在 ES6 之前是没有提供常量这一特性的。

但是根据常量的特性:定义赋值后不能被修改, 就可以通过一些方法来模拟常量

1. 采用大写变量名的方式

按照惯例,常量的命名一般都是大写,单词之间用下划线 _ 分隔。

示例:

var PI = 3.1415924;
var DB_NAME = "root"
var DB_PASSWORD = "123456"

不过这种定义常量的方式,本质上还是变量, 其值是可以随便改变的。

2. 利用对象中的属性来控制可写性,将对象的属性设置为只读

示例:

var CONFIG = {};

Object.defineProperty(CONFIG, 'DB_NAME', {
  value: 'root',
  writable: false,    //设置为不可写
});

console.log(CONFIG.DB_NAME); // 输出:root

CONFIG.DB_NAME = 'guest';

console.log(CONFIG.DB_NAME); // 因为不可被改写,所以输出:root

这种方式将常量都放在一个对象下,通过Object.defineProperty定义属性,设定其writablefalse,就可以防止被改写

但有一个问题,CONFIG 自身这个对象可能被修改。

换一个思路,既然在最外层声明的变量是放在window上的,那可以用这个方式往 window上挂不可改写的属性。

Object.defineProperty(window, 'DB_NAME', {
  value: 'root',
  writable: false,
});

console.log(DB_NAME); // 输出:root

DB_NAME = 'guest';

console.log(DB_NAME); // 因为不可被改写,所以输出:root

通常情况下 window 对象是不可被修改的,这样常量的安全系数就变得非常高,但缺点是可能性较差,通过一点修改可以提升可读性。

//定义一个函数
var define = function(name, value) {
  Object.defineProperty(window, name, {
    value: value,
    writable: false,
  });
};

define('DB_NAME', 'root');
define('DB_PASSWORD', 'root');

只要约定好使用 define 函数定义的都为常量即可。

还有两种方式,就是结合Object.sealObject.freeze的特性来声明常量。

前者可以使对象不能再被扩充,但是所有属性还需要再手动设置不可写,后者可以让对象不能扩充,属性也不能修改。

这里对这两个原生方法不再做过多描述,有兴趣可以查阅相关 API 资料。

小结

  1. 变量是内存中的一块区域,可以存储值

  2. 变量有名字,变量的名字是区分大小写的

  3. 变量的命名规范:必须是以字母下划线 _ , 美元符号 $ 开头 , 并且区分大小写

  4. 使用 console.log() 输出变量的值

  5. 关键字不能作为变量名

  6. 常量可以更改对象的属性的 writable 来模拟

image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2223530
累计阅读

热门教程文档

Lua
21小节
Rust
84小节
10.x
88小节
Spring Boot
24小节
C#
57小节