之前竟然对常量、字面量都没有搞清楚,要学习的真的是好的 刚才终于搞清楚了 是该好好在学一遍js的
字面量:在编程语言中,一般固定值称为字面量,如 3.14。
不是一种值,而是一种变量记法
等号右侧的值均为字面量 var a = 1
.数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)。
3.14 1001
.字符串(String)字面量 可以使用单引号或双引号:
"John Doe" 'John Doe'
.对象(Object)字面量 定义一个对象:
{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}
还有函数字面量、数组字面量等
常量:与变量一样均是用于 ‘存储数据’ 的容器,只不过常量的值在程序的运行中不可以发生改变
在ES6之前并没有声明常量的方法,在ES6中新增加了const来定义常量
建议常量的命名全部大写,如果由多个单词构成,可以用下划线分割
const MY_SITE="http://www.zhangpeiyue.com";//MY_SITE为常量,"http://www.zhangpeiyue.com"为字面量
只能在初始化的时候被赋值,赋值以后不允许被再次赋值
变量:也是用于存储数据的容器,在程序的运行中可以发生改变或者被再次赋值
可以使用var关键字来声明变量,变量的值可以是任意类型。为了更好的阅读,建议变量使用驼峰命名法命名:
var myName="js";//myName为变量,“zhangpeiyue"为字面量
在ES6中新增了let关键字声明变量,作用与var类似,只是声明的变量只在其所在区域内有效:
let str="es6";//str为变量,"es6"为字面量
说明:var,let和不用任何修饰的变量的区别
num = 1 代表window的一个属性,不能使用delete删除
var num = 1;代表全家变量,可以使用delete删除
let num = 1;代表局部变量
常量,变量,字面量的区别
常量与变量的区别:常量与变量的存储方式是一样的,只不过常量必须要有初始值,
而且值不允许被修改,而变量可以无初始值,且可以多次赋值。
常量与字面量的区别:常量与字面量均不会被改变。常量为存储数据的容器,
而字面量为等号右侧的值,字面量是由字符串,数字等构成的字符串或数值。
再说一下标识符:标识符是名称。 在 JavaScript 中,标识符用于命名变量(以及关键词、函数和标签)。
标识符须除了关键字、保留字之外才行
let 是声明变量
- 它不同于var,不存在变量提升 在声明变量之前该变量是不可用的,否则会报错,这在语法上叫“暂时性死区”;
- let 不允许同一作用域内重复声明
-
在某些场合下var声明变量是不合理的
`场景1: 内层变量覆盖了外层变量 var tmp = new Date(); function f () { console.log(tmp) if (false) { var tmp = 'hello world!' } } f () // undefined 场景2:用来计数的循环变量泄露为全局变量 var a = 'hello' for (var i = 0; i<a.length; i++) { console.log(a[i]); } console.log(i) // 5 这里i只是用来控制循环,但循环结束后,它并没有消失,而是泄露成了全局变量,这样可能很不好 所以for(let i =0;...)可能会 是更好的选择 `
-
关于块级作用域,可能有的小白不知道,其实它就是 {} {{}}这就是两个块级作用域了
let就是给js新增块级作用域的那个法器一些说明 . 外层作用域无法读取内层作用域的变量 . 块级作用域与函数声明有点复杂 就不多说了 但ES6支持(允许)在块级作用域内声明函数
const是声明常量
-
它声明一个只读常量,且一旦声明,就不能改变
eg:const PI = 3.1415PI // 3.1415 PI = 3 // 报错
- 声明必须赋值,否则报错
eg: const FOO // 报错 - 不会提升,必须先声明再使用,否则报错
- 和let一样,不能重复声明,否则报错
const 本质 :
const 实际上保证的并不是变量的值不能改动,而是变量指向的那个内存地址不得改动。
但这对于简单的数据类型来说(数值、字符串、布尔值等),值就是保存在变量指向的内存地址中,因此等同于常量(所以,说const是声明常量好像不太准确了)
但对于复合类型的数据(主要是数组和对象呐),变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,这完全不能由它控制。因此,将一个对象(或数组)声明为常量时一定要考虑好哦
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。