javascript

javascript this相关知识

最近看了一些javascript相关的知识,打算整理一下 一、全局执行上下文中的this console.log(this) 上面这个打印结果是: 全局执行上下文中的this是指向window对象的 二、函数执行上下文中的this function foo() { console.log(this) } foo() 上方这段代码的打印结果是: 再看下下面这段代码,它的打印结果也是window对象 function bar() { console.log(this) } function foo() { bar() } foo() 以上的示例说明,在默认情况下调用一个函数,其执行上下文中的this也是指向window对象的 2.

  • Nemo
    Nemo
6 min read
javascript

javascript 闭包

最近看了一些javascript相关的知识,打算整理一下 闭包 在javascript中,根据词法作用域的规则,内部函数总是可以访问其外部函数中的变量,当通过调用一个外部函数返回一个内部函数后,即使该外部函数已经执行结束了,但是内部函数引用外部函数的变量依然保存在内存中,我们就把这些变量的集合称为闭包。 看以下示例代码,在bar执行的时候,访问了foo的内部变量a和b,所以产生了闭包 function foo() { var a = 20 var b = 30 function bar() { return a + b } return bar; } var bar = foo(); bar(

  • Nemo
    Nemo
4 min read
javascript

javascript 作用域-作用域链

最近看了一些javascript相关的知识,打算整理一下 一、作用域 先来看一段代码 for (var i = 0; i < 10; i ++) { console.log('test'); } console.log(i); 如果是在其他语言里面,console.log(i)会报错,因为i的只在for循环这个块里面起作用。但是javascript里面这段代码打印结果是10。 下面说一下javascript里面的作用域以及作用域链等相关知识 1.1 全局作用域 和 函数作用域 在javascript里,

  • Nemo
    Nemo
7 min read
javascript

javascript-变量提升及执行上下文相关知识

最近看了一些javascript相关的知识,打算整理一下 变量提升 先来看一段示例代码 foo() console.log(name) var name = 'test' function foo() { console.log('function foo be called'); } 可以看到打印出的结果是: function foo be called undefined 可以看到变量name在声明之前就被调用了,这在其他语言里面是会报错的,但是在javascript里面却打印出undefined,这是因为用var声明的变量发生了变量提升。 在javascript代码执行之前,需要先进行编译。在编译的时候,就把变量的声明和函数的声明提升到了“

  • Nemo
    Nemo
5 min read