常用的linux命令 函数 变量提升 window 作用域

201 阅读4分钟

linux命令

git 里的一些命令: cd 切换文件路径的一个命令 或者写 cd 然后直接把哪个文件拖到git里也行 ls 查看文件目录 touch 创建文件 vi 编辑文件 vi ---> 按 i 键 进入编辑状态 ---> 编辑完成之后 按 esc 键 退出编辑状态,再输入 :wq 这是保存并退出 然后 回车 cat 查看文件的内容 rm 删除文件 remove的简写 mkdir 创建文件夹 rmdir 删除文件夹

函数

  1. 函数声明方式
    function fn () {//上下都能调用//函数体}
    var f = function qqq(){  //这里的qqq 不能用来函数调用// 函数体//这种声明方式只能在这个之后调用}
  1. 基本常识

//函数的存储过程:开辟一个16进制的堆内存 --->把函数体当作字符串 存储起来

//函数 形参 是定义的时候编写的

//函数 实参 是执行的时候传递的

//arguments 实参的集合 类数组 (两类类数组:一个是arguments 一个是元素集合,通过document.querySelelctorAll)

//return 决定函数的返回值 打断函数执行

//this 函数的执行主体;谁执行这个函数

//箭头函数 没有arguments 和 this

function f2 (a,b,...c) { console.log(a,b,c) } f2(1,2,3,4,5,6,7);

//剩余运算符   ...c 这里就是一个剩余运算符,如果前面没有 a,b这两个参数,..c就是一个扩展运算符,其实都是它自己,是es6新增的内容
//剩余运算符 就是为 箭头函数准备的 因为箭头函数里不能使用arguments

变量提升

  1. 什么是变量提升

变量提升 : 在代码执行之前,JS会把代码中的带var 和带function的提前声明

带var的是只声明不定义

带function是声明又定义 但是函数里 return后面的东西不提升

变量提升只提升等号左边的部分

变量提升 对于条件来说 不管条件成不成立,都会进行变量提升 在条件句或者循环句中, function 声明 高版本的浏览器是 只声明不定义的 和var是一样的

var let的区别

var const let 的区别

var 可以重复声明 let 和 const 不可以

var 存在变量提升 let 和 const 不存在

var 声明的变量会在 window 下增加一个对应的属性; let 和 const 不会

var 不识别块级作用域,let 和 const 可以### var和let的区别

作用域

作用域 就是 代码能够起作用(能影响的)的区域

//作用域分为 全局作用域 和 私有作用域
//作用域其实就是一块 栈内存 

// 堆内存是用来存储引用数据类型的
//栈内存是用来存储值类型的  还有就是用来提供代码运行环境的
    全局作用域:页面一打开就会形成一个全局作用域,一个页面只有一个全局作用域
    
    私有作用域:在函数执行的时候,会形成一个私有的作用域;
    块级作用域:指的是 判断句 循环句  的大括号包起来的部分  es6里新增的
                只有let 和const声明的变量能识别块级作用域,对于var来说,不存在块级作用域

    全局作用域中声明的变量 我们称为全局变量
    私有作用域中声明的变量 我们称为私有变量; 形参也是私有变量;

    上级作用域:
        函数执行时形成的那个私有作用域,一般都会存在一个上级作用域,私有作用域的上级作用域,跟这个函数在哪里执行没有关系,只跟函数在哪个作用域定义有关系
    
    私有作用域中的变量,有可能不是该私有作用域的私有变量,这时该变量对应的值就需要去上级作用域查找;若仍不是上级作用域的私有变量,那么就接着向上查找,直到找到  window 全局 的位置,若仍没有,就会报错  
    这种查找变量的机制,我们称为  作用域链

    函数执行时,先有形参赋值,再进行变量提升