记一次学习 JavaScript 笔记

149 阅读2分钟

我是今年刚毕业的一只小菜鸟,在没有定学习目标的情况下盲目的学习了一点点 js 的知识。但对一些知识点不知怎么在实战上派上用场?好了,话都不多说,本意是在这记一下笔记,下面让我们来看看:

闭包

看了很多对闭包的理解的文章,自己的一点点总结:闭包可以从内部函数访问外部函数作用域,对闭包的理解还是很浅,抱歉。

 function makeFunc() {
    var name = "John";
    function displayName(){
        console.log(name);
    }
    return displayName
 }
 var make = makeFunc();
 make();    // John

上面的例子,可以看出内部函数 displayName() 在被调用前被外部函数返回了。make 执行了 makeFunc() 时并创建 displayName() 函数实例的引用,而 displayName() 实例仍可访问到外部函数的变量,当 make 被调用,name仍可被访问,其值被打印出到控制台。

var 和 es6的let、const

在 ES6 之前,JavaScript 只有两种作用域: 全局变量 与 函数内的局部变量。

console.log(name)  // 
console.log(age)  // Uncaught ReferenceError: sex is not defined
console.log(sex)  // Uncaught ReferenceError: sex is not defined
var name = "John";
let age = 18
const sex = "男"

function foo(){
    console.log(name)  // undefind
    console.log(age)  // Uncaught ReferenceError: sex is not defined
    console.log(sex)  // Uncaught ReferenceError: sex is not defined
    var name = "John";
    let age = 18
    const sex = "男"
}
foo()

var name = "John";
let age = 18
var age = 15  // Uncaught SyntaxError: Identifier 'age' has already been declared
const sex = "男"
sex = "女"  // Uncaught TypeError: Assignment to constant variable.

从上面的例子总结出:

var、let、const的不同处

  • var 声明不管是在函数还是全局内任何地方都会在其地方最顶上声明它。
  • letconst 声明则不会在最顶上声明,在声明它们的位置之前调用它们会报错。
  • var 声明的变量在任何代码块都有效,但 letconst 只能在命令所在的代码块内有效。
  • varlet 声明的变量可再赋值,const 则不行,const 相当于一个只读的常量,一旦声明,常量的值就不能改变。

好了,第一次笔记就先写到这个吧,第一次在掘金写文章,简洁到不能再简洁了,杂乱无章,有很多不足之处,请各位大佬们多多指教。最后问问各位前端大佬,该怎样去学习 js 和在实战中怎么去应用呢?