美文网首页让前端飞
JS作用域链&引用类型

JS作用域链&引用类型

作者: 小7丁 | 来源:发表于2018-07-29 15:45 被阅读2次

一、立即执行函数表达式是什么?有什么作用?

(function(){ /* code */ }());

(function(){ /* code */ })();
  • 上面这种写法就是立即执行函数表达式。以圆括号开头,js就会认为这是一个表达式,而不是函数定义语句,所以就避免了错误。
  • 为什么要用立即执行函数表达式?有时候我们需要在定义函数之后,立即应用函数。而因为function出现在行首一律解释成语句,即然是函数的定义,就不能够以圆括号结尾。所以用圆括号开头就可以使其变成一个表达式, 而避免错误。
    一是不必为函数命名,避免了污染全局变量;
    二是函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。

二、求n!,用递归来实现。

function factorial(n){
    if(n === 0) {
      return 1
  }
    if(n === 1){
        return 1
    }
    return n * factorial(n - 1)
}
factorial(3)

三、写一个函数,返回参数的平方和?

   function sumOfSquares(){
      var result = 0
      for(var i=0; i<arguments.length; i++ ){
         result += arguments[i]*arguments[i]
    }
        return result
   }
   var result = sumOfSquares(2,3,4)
   var result2 = sumOfSquares(1,3)
   console.log(result)  //29
   console.log(result2)  //10

四、如下代码的输出?为什么?

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);

false//因为obj1和obj2所指向的地址不相同
{a : 1,b :2}//将obj2赋值给obj1
true//由于上一步赋值,现在两个的地址相同

相关文章

  • JS作用域链&引用类型

    一、立即执行函数表达式是什么?有什么作用? 上面这种写法就是立即执行函数表达式。以圆括号开头,js就会认为这是一个...

  • JS作用域链 & JS引用类型

    立即执行函数表达式是什么?有什么作用? 在 Javascript 中,圆括号()是一种运算符,跟在函数名之后,表示...

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • 3小时速学JS原理

    内容:前端JS部分知识点原理速讲,内容包括且不限于 声明前置 引用类型 函数作用域链 闭包 跨域 面向对象 继承 ...

  • 作用域链&引用类型

    作用域链&引用类型 执行环境与引用类型是JavaScript中的重要概念。 执行环境(execution cont...

  • JS回顾变量、作用域、内存问题

    基本类型和引用类型的值属性的动态复制变量值传递参数检测类型 执行环境与作用域延长作用域链没有块级作用域声明变量提升...

  • 作用域链&引用类型

    1、立即执行函数表达式是什么?有什么作用? (function(){函数体})()即为立即执行函数,就是将一个匿名...

  • 前端JS基础一(基础知识)

    基础知识 js基础三座大山 原型 原型链 作用域 闭包 异步 单线程 知识点 1.变量类型:值类型和引用类型(指针...

  • 进阶4:JS作用域链 & JS引用类型

    题干 立即...

  • js基础

    js三座大山:原型和原型链 作用域和闭包 异步和单线程引用类型:对象 数组 函数 因为指针引用的是一个空间 所以叫...

网友评论

    本文标题:JS作用域链&引用类型

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