什么是变量?
计算机存储数据的形式是以二进制形式进行存储, 对于人类来说 操作起来是及其不便的, 同时你并不知道编译出来的数据在机器码中的哪一个位置.
在计算机底层中帮助我们做了一件事情 就是一个变量会分配一个内存地址而一个内存地址对应一个值 也就是 [[key=>value 键值对形式]], 即使是内存地址是难以记忆的 0X6666
在较为多的变量当中你可能就无法快速分辨哪一个地址对应值了, 所以在这个形式上有做了一层包装也就是 变量对应值的关系
变量(variable)与值(value)的关系
变量与值仍是 键值对 对应形式, 在程序员视角中 变量就是一个 box, 用来存储任意事物的
变量定义 与 定义方式
在JavaScript 中变量定义方式是以 var
方式定义变量的
var a = 10; // a 容器中装着 10 这个值
// console.log 为输出结果到 浏览器控制台中
console.log(a); // 10, 这是通过 a 找到 10, 也就是 key 为 a, value 为 10
在 JavaScript 中多变量推荐使用 一键定义形式, 因为这符合 我们的使用习惯 需要使用的变量都定义在该 [[作用域]] 的顶部 便于后续开发者简单明了的查看定义了哪些变量
var a = 10,
b = 20,
c = 30,
d = null;
a += b + c; // 60
d = a + b + c; // 110
变量定义规则
- 变量通常使用 [[命名法#小驼峰命名法|小驼峰命名法]] (在 C 语言中通常为 蛇形命名法)
var myNumber = 1,
myString = 'string',
myBoolean = true,
myArray = [],
myObject = {},
myFunction = function() {/*...*/};
- 变量开头必须为
字母,$,_
开头否则一律抛出错误
var a1 = 1; // 合法
var $ = 1; // 合法
var _1 = 1; // 合法
var +a = 1; // 不合法
var 1a = 1; // 不合法
var .a = 1; // 不合法
var 的一个 BUG?
我们上文说过 我们的习惯是将变量定义出来在使用, 而非 先使用后定义, 但是在这里我必须和你说 在 ECMAScript3~5 中我们都可以将变量先使用 在定义或不定义
a = 1; // 直接使用 并未定义
console.log(a);
// undefined 表示 一个变量未定义一个值
// 判断一个 未通过 var 定义的变量 他的类型未 undefined
console.log(typeof b); // undefined
var c;
console.log(c); // undefined
这是 JavaScript 所遗留的历史问题, 因为 JavaScript 在上个世纪仅使用 10 天就完成开发, 这使得 JavaScript 存在这诸多问题, 但是这些问题我们后面都会讲到比如以下几个
推荐观看(暂时还未写完, 后续会填坑)
- var&let&const
- null 存在的问题