JavaScript 回顾学习:变量

基础成就高度

Posted by Mopecat on June 14, 2018

第一篇回顾学习,变量

什么是变量

变量就是在内存中刨一个坑存“一个”数据,再给这个坑起个名。 为什么要给“一个”加引号呢,因为JavaScript是松散类型的,即一个变量可以用来保存任何类型的数据。 变量的分类: 全局变量:可以在任何地方使用的变量; 局部变量:在函数内声明的变量只在函数内有定义,作用域是局部性的

什么时候使用

当一个数据需要被反复使用时,就要先保存在变量中。

怎么用

声明变量

var 变量名 ; 例:var keng 这样我就声明了一个叫keng的变量;变量名有一定的要求大概总结为一下几点

  1. 不能以数字开头
  2. 语义化
  3. 不能用保留字 在es6中还有两种声明变量的方式(IE11) let:声明块级作用域的变量,通俗的理解就是花括号就是它的作用域 const:声明常量:需在声明时直接赋值,声明为基础类型不可改变。声明为引用类型不可重写。
    赋值

    keng = '坑' 将上文中声明的keng赋值为字符串'坑'; 也可以在声明时直接赋值变量,如:var keng2 = '第二个坑' 不经过声明也可以直接赋值变量,但不推荐这么做,因为这样的变量会默认为全局变量(在严格模式下会报错) 如 keng3 = '没有声明就赋值的第三个坑是没有灵魂的坑' 如果仅声明而没有赋值的变量,默认值为:undefined 在后面数据类型会详细说~。~ 可以同时声明多个变量,并直接赋值,用逗号隔开即可。如上文中的三个坑可以这样写

1
2
3
var keng = '坑',
    keng2 = '第二个坑',
    keng3 = '没有声明就赋值的第三个坑是没有灵魂的坑'

可以写成一行,这样写是为了提高可读性

变量作用域

上文中说到的全局变量和局部变量即为变量作用域的基本概念 需要注意的是

  1. 局部变量的优先级高于同名的全局变量,即如果在函数内声明一个局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量会被局部变量所遮盖。
    1
    2
    3
    4
    5
    6
    
    var keng = '坑是个好坑,能不能用就不知道了';
    function changeKeng(){
        var keng = '好坑也不用你';
        return keng;
    }
    changeKeng();  // '好坑也不用你'
    
  2. 声明提前 在局部作用域声明变量的时候会将变量提升至当前作用域的顶部。 敲个栗子:
    1
    2
    3
    4
    5
    6
    
    var keng = '这是个全局的坑';
    function quanyikuaidi(){
        console.log(keng);   // 输出 'undefine' 而不是 '这是一个全局的坑'
        var keng = '圈一块地里的坑';
        console.log(keng);   // 输出 '圈一块地里的坑'
    }
    

    以上代码等同于

    1
    2
    3
    4
    5
    6
    7
    
    var keng = '这是个全局的坑';
    function quanyikuaidi(){
        var keng;               // 在函数顶部声明变量 keng
        console.log(keng);      // 变量存在还没有赋值,默认值为undefined
        keng = '圈一块地里的坑'; // 给变量 keng 赋值
        console.log(keng);      // 输出 '圈一块地里的坑'
    }
    

结语

到这里变量的部分就OK了,其他的部分敬请期待了,目录传送门 ,没有连接的证明本宝宝还没写,哈哈哈哈哈 本人公众号二维码欢迎关注哈: 图片描述