Blogger Information
Blog 8
fans 0
comment 0
visits 4256
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
变量,常量的区别+JS数据类型+作用域+闭包
deathpool
Original
766 people have browsed it

变量,常量的区别

变量
  • 可以改变的量,往往用英语字母代替变量,并且区分大小写;
  • 定义声明 var/let 加变量名,比如:
    let b;b=3;
    var a = 1;
  • 变量的用途其实是一个容器,它的作用在于可以起到一个临时存储数据。
    常量
  • 不会改变的值
    使用const 关键字来声明
    习惯上常量名称使用大写定义
    区别
    常量与变量的区别
  • 常量与变量的存储方式是一样的,只不过常量必须要有初始值,而且值不允许被修改,而变量可以无初始值,且可以多次赋值。

JS 基本数据类型

1.String 类型

字符串(String)类型是一段以单引号’’或双引号””包裹起来的文本,例如 ‘123’、”abc”。需要注意的是,单引号和双引号是定义字符串的不同方式,并不是字符串的一部分。

定义字符串时,如果字符串中包含引号,可以使用反斜杠\来转义字符串中的引号,或者选择与字符串中不同的引号来定义字符串,如下例所示:
let str = "asd"; let str = '\n asd';

2.Number(数字) 类型
数值(Number)类型用来定义数值,JavaScript 中不区分整数和小数(浮点数),统一使用 Number 类型表示,如下例所示:
let num1 = 123; // 整数 let num2 = 3.14; // 浮点数
注意:Number 类型所能定义的数值并不是无限的,JavaScript 中的 Number 类型只能表示 -(253 - 1) 到 (253 -1) 之间的数值。

3.Boolean(布尔) 类型
布尔(Boolean)类型只有两个值,true(真)或者 false(假)
例子:
let a = true; // 定义一个布尔值 true let b = false; // 定义一个布尔值 false

4.Null 类型
Null 是一个只有一个值的特殊数据类型,表示一个“空”值,即不存在任何值,什么都没有,用来定义空对象指针。

使用 typeof 操作符来查看 Null 的类型,会发现 Null 的类型为 Object,说明 Null 其实使用属于 Object(对象)的一个特殊值。因此通过将变量赋值为 Null 我们可以创建一个空的对象。

5.Undefined 类型
Undefined 也是一个只有一个值的特殊数据类型,表示未定义。当我们声明一个变量但未给变量赋值时,这个变量的默认值就是 Undefined。例如:
let num; console.log(num); // 输出 undefined


JS 引用数据类型

1.Object 类型
JavaScript 中的对象(Object)类型是一组由键、值组成的无序集合,定义对象类型需要使用花括号{ },语法格式如下:
{n1: 1, n2: v2, n3:3, …, nN: vN}

其中 n1、n2、n3、…、nN 为对象中的键,va1、v2、v3、…、vN 为对应的值。

在 JavaScript 中,对象类型的键都是字符串类型的,值则可以是任意数据类型。要获取对象中的某个值,可以使用对象名.键的形式,如下例所示:

  1. let shuju = {
  2. name: 'asd',
  3. num: 20,
  4. arr: ['js', 'web', 'php'],
  5. str: 'Beijing',
  6. right: true,
  7. zero: null
  8. };
  9. console.log(shuju.num); // 输出 20
  10. console.log(shuju.name); // 输出 asd
  11. // 另外一种输出方式
  12. const item2 = {
  13. "my name": "充电宝",
  14. "min-price": 9.9,
  15. };
  16. console.log(item2["my name"]);//输出充电宝
  17. console.log(item2["min-price"]);//输出9.9

2.Array(数组) 类型
数组(Array)是一组按顺序排列的数据的集合,数组中的每个值都称为元素,而且数组中可以包含任意类型的数据。在 JavaScript 中定义数组需要使用方括号[ ],数组中的每个元素使用逗号进行分隔,例如:
[1, 2, 3, 'hello', true, null]
另外,也可以使用 Array() 函数来创建数组,如下例所示:

  1. let arr = new Array(1, 2, 3, 4);
  2. console.log(arr); // 输出 [1, 2, 3, 4]

数组中的元素可以通过索引来访问。数组中的索引从 0 开始,并依次递增,也就是说数组第一个元素的索引为 0,第二个元素的索引为 1,第三个元素的索引为 2,以此类推。如下例所示:

  1. let qwe= [1, 2, 3.14, 'asd', null, true];
  2. console.log(let[0]); // 输出索引为 0 的元素,即 1
  3. console.log(let[5]); // 输出索引为 5 的元素,即 true
  4. console.log(let[100]); // 索引超出了范围,返回 undefined

3.Function(函数) 类型
函数(Function)是一段具有特定功能的代码块,函数并不会自动运行,需要通过函数名调用才能运行,如下例所示:

  1. function asd_Asd(n){
  2. return "asd, " + n;
  3. }
  4. let res = asd_Asd("qq");
  5. console.log(res); // 输出 asd,qq

全局作用域

全局变量是指:在大括号或者函数的代码块外声明了一个变量,这个变量的作用域就是全局作用域,能在全局任意地方被调用。

  1. let asd='1';
  2. function asd1 () {
  3. console.log(asd) // 输出:'1'
  4. }
  5. function asd2 () {
  6. console.log(asd) // 输出:'1'
  7. }
  8. console.log(asd) // 输出:'1'

局部作用域
局部作用域指:函数内定义的变量,就是局部作用域的变量,能够在该级作用域级任意下级作用域中使用,变量aasd只能在asd函数内部包括内部函数中使用,asd()函数外部就无法调用aasd变量。

  1. function asd() {
  2. let aasd = 1;
  3. console.log(aasd) // 输出:1
  4. function asd_A() {
  5. console.log(aasd); // 输出:1
  6. }
  7. asd_A();
  8. }
  9. function asd2() {
  10. console.log(aasd) ;
  11. }
  12. asd2(); // 结果:报错

闭包

  • 闭包的含义:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

  • 闭包的特点:
    作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
    一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
    简单的闭包如下:

    1. function f1(){
    2. let a = 100;
    3. return function f2(){
    4. alert(++a);
    5. }
    6. }

函数执行时创建了一个内部函数,这个内部函数作为返回值,或以某种方式保留下来(属性),之后才会调用,这就会形成了闭包。通俗来讲,JS所有的function都是一个闭包。

  • 用途
    匿名自执行函数
    创建一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,因此在函数执行完后会立刻释放资源,关键是不污染全局对象。
    代码如下:
  1. (function() {
  2. let a=1;
  3. consol.log(a);
  4. } ());
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post