我的JS笔记 -- 变量

作者: 骷髅不会笑丶 | 来源:发表于2017-12-13 21:56 被阅读28次

变量是存储信息的容器,在JS中,变量是松散类型的,所以JS中的变量可以用来保存任何类型的数据。所以变量是没有类型的,值才有。

变量标识符

标识符是指变量、函数和属性的名字,或者函数的参数,标识符需要满足一下条件:

  • 第一个字符必须是一个字符、下划线_或一个美元符号$

  • 其他字符可以是字母、下划线、美元符号或数字;

  • JS中有一组具有特殊用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作,这些关键字不可用于标识符;另外还有一组可能将来被用作关键字的保留字,最好也不要用保留字作为标识符;

      var case = 1; // 报错,case为关键字
      var char = 2; // 未报错,但char为保留字,建议不要用于标识符
    

定义变量

在JS中变量的定义会被分为两步,变量声明和变量赋值。

var a = 1; // 声明变量并赋值

// 上面可以拆分为两步
var a; // 变量声明
a = 1; // 变量赋值

var b; // 声明变量未赋值,变量值为undefined

上面的代码我们使用了var操作符定义变量,变量将会作为变量所在作用域中的局部变量。如果在函数中使用var定义一个变量,那么这个变量在函数退出后将会被销毁。

如果未用var操作符而直接对变量进行赋值,变量将会自动声明成为全局变量,在浏览器中全局变量会作为window对象的属性。

a = 1; // 未使用var
window.a // 1

在变量声明之后再声明同名变量

var a = 1; 
a // 1
var a = 2; // 再次声明赋值同名变量,变量声明已经有同名的,所以重复的var声明被忽略,但赋值不会,所以a被赋新值2
a //  2
var a; // 再次声明同名变量,变量声明已经有同名的,所以重复的var声明被忽略,这条语句无效
a // 2

变量值的类型

JS变量仅仅是一个保存值的占位符而已,所以变量的值可以是任何类型的数据。

在JS中数据有七种内置类型:空值( null)、未定义( undefined)、布尔值( boolean)、数字( number)、字符串( string)、对象( object)、符号( symbol, ES6 中新增)。null,表示一个空对象指针,用于将来保存对象但还没有真正保存对象时,变量初始化的值;undefined,表示变量已声明但未初始化赋值;Boolean,布尔类型,布尔(逻辑)只能有两个值:true 或 false;string,字符串是储存字符的变量;number,数字类型;object,对象是一组数据和功能的集合。

var a = 1; // 变量值可以是基本类型
a = function () { console.log(2) }; // 修改变量的值为一个函数

变量值还有另一种类型区分方式,分为基本类型值(如undefined、null、boolean、number、string)和引用类型值(如object)。

  • 基本类型值,保存在栈内存,这种值完全保存在内存的一个位置;

      var a = 1;
      var b = a;
      b = 2;
      a // 1,基本类型值通过值复制传递,两个值之间相互独立,不会互相影响
    
  • 引用类型值,保存在堆内存,变量保存的实际上只是一个指针,这个指针指向内存中的一个位置,该位置保存对象;

      var a = [1];
      var b = a;
      b.push(2);
      a // [1, 2],引用类型通过引用复制传递,两个变量指向同一个对象,会相互影响
    

更多文章在 这里 ,觉得不错希望点个 star

相关文章

  • 我的JS笔记 -- 变量

    变量是存储信息的容器,在JS中,变量是松散类型的,所以JS中的变量可以用来保存任何类型的数据。所以变量是没有类型的...

  • JS—匿名函数与命名函数

    链接,我之前做的两篇笔记js变量作用域,里面提到定义函数的不同方式,导致的变量声明提升问题。还有这篇js特殊的对象...

  • 原生js

    原生JS学习笔记1——基本数据类型和运算符 js的背景知识介绍,js的引入方式,js的变量及运算符 原生JS学习笔...

  • xdh精英班Day5

    第五天学习笔记 Node.js 是运行js的编译环境 js 基础语法 变量声明,赋值语句:var。语法如下: va...

  • JavaScript笔记

    js笔记 一、js简介1、js是什么2、js作用3、组成4、引入方式二、基本语法1、变量2、原始数据类型3、引入数...

  • 变量

    阮一峰js笔记原文 1. 概念 如果只是声明变量而没有赋值,则该变量的值是undefined。undefined是...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • JS笔记(一)变量

    变量是自定义的,可以存放任何类型的数据,数据可以是已有的,也可以是还不存在的 定义变量的方式(2种),使用关键字v...

  • JS笔记 变量提升

    JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是...

  • JS 学习笔记 - 变量

    变量命名规则 变量必须以字母开头 变量也能以 $ 和 _ 符号开头(不推荐) 变量名称对大小写敏感(y 和 Y 是...

网友评论

    本文标题:我的JS笔记 -- 变量

    本文链接:https://www.haomeiwen.com/subject/ehttwxtx.html