资讯专栏INFORMATION COLUMN

js面试题目

mikyou / 1656人阅读

摘要:答案解析是返回的函数的形参个数,所以为返回的是函数调用时的实参个数,所以为初始值就是正被执行的对象用于在函数内部调用自身,对象本身是个由函数调用时传入的实参组成的伪数组,访问单个参数的方式与访问数组元素的方式相同。

1 function test (x, y, z) {

console.log(test.length)
console.log(arguments.length)
console.log(arguments.callee === test)
console.log(arguments[2])

}
test(10,20)
答案:3 2 true undefined
解析:
test.length是返回的函数的形参个数,所以为3;

arguments.length返回的是函数调用时的实参个数,所以为2;

arguments.callee:初始值就是正被执行的 Function 对象,用于在函数内部调用自身,arguments对象本身是个由函数调用时传入的实参组成的伪数组,访问单个参数的方式与访问数组元素的方式相同。

只传入了两个参数,自然为undefined.
2 var a = 10
a.pro = 10
console.log(a.pro + a)

var s = "hello"
s.pro="world"
console.log(s.pro+s)
答案:NaN undefinedhello
解析:JavaScript引擎内部在处理对某个基本类型 a进行形如a.pro的操作时,会在内部临时创建一个对应的包装类型(对数字类型来说就是Number类型)的临时对象,并把对基本类型的操作代理到对这个临时对象身上,使得对基本类型的属性访问看起来像对象一样。但是在操作完成后,临时对象就销毁了,下次再访问时,会重新建立临时对象,当然就会返回undefined了
3

var f =1
if(!f) {
  var a =10
}
function fn() {
  var b =20
  c = 30
}
fn()
console.log(a)
console.log(c)
console.log(b)

答案:undefined 30 报错:b is not defined
解析:
1、没有用var声明的是全局变量,即便在函数内部;
2、只有在function内部新声明的才是局部变量,在if,while,for等声明的变量其实是全局变量(除非本身在function内部)
3、因为变量提升,虽然if块的内容没执行,但是预解析阶段会执行var a,只是没有赋值而已,因此打印a是undefined而打印b会报错

4

var length = 10
function fn () {
    console.log(this.length)
}
var obj = {
    length: 5,
    method: function(fn) {
        fn()
        arguments[0]();
    }
}

obj.method(fn,1)
答案:10,2,第一次输出10应该没有什么异议,这里的this指向window,第二个调用arguments[0]()相当于执行arguments调用方法,this指向arguments,而这里传了两个参数,故输出arguments长度为2。

5 function fn(a) {
console.log(a)
var a = 2
function a() {}
console.log(a)
}
fn(1)
答案:f a() { } 2
解析:我们知道预解析阶段,变量声明和函数声明会提前,且变量名和函数名同名时,函数优先级高于变量,会覆盖变量,因此第一个输出的是f a(){ },继续执行,会执行a=2,再输出的时候就会输出2,不理解的同学百度一下变量提升和函数提升
6 已知数组,编写一个程序将数组便情话并且去掉其中的重复数字,然后升序排列
[[11,22,22],[13,14,15,15],[16,17,18,19,[11,12,[12,13,[14]]]],12]
7 实现一个函数add,满足以下结果
add(1) // 1
add(1,2) // 3
add(1)(2) // 3
add(1,2)(3,4) // 10
add(1)(2)(3) //6

    function add () {
        const arg = [...arguments]
        function sum () {
            arg.push(...arguments)
            return sum
        }
        sum.toString = function () {
            return arg.reduce((x, y) => {
                return x + y
            })
        }
        return sum
    }
    console.log(add(1))
    console.log(add(1, 2))
    console.log(add(1, 2)(3, 4)(5,6))

8 看代码

function Foo () {
        getName = function () {
          console.log(1)
        }
        return this
      }
      Foo.getName = function () {
        console.log(2)
      }
      Foo.prototype.getName = function () {
        console.log(3)
      }
      var getName = function () {
        console.log(4)
      }
      function getName () {
        console.log(5)
      }
      Foo.getName()
      getName()
      Foo().getName()
      getName()
      new Foo.getName()
      new Foo().getName()
      new new Foo().getName()

答案:2 4 1 1 2 3 3
1 访问的是Foo函数上存储的静态属性
2 函数表达式覆盖函数声明,因此调用的是覆盖后的getName
3 先执行了Foo(),此时返回window,并且函数里getName没有var 所以覆盖了全局的 因此是1
4 等同于window.getName 4
5 点运算符优选与new, 执行为 new (Foo.getName)()
6 执行顺序为 (new Foo()).getName() (new Foo()) 返回Foo一个实例
7 执行顺序为 new ((new Foo()).getName)() 先初始化Foo实例 然后将其原型上的getName 作为构造函数再次new

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105626.html

相关文章

  • 由浅入深的前端面试题 和矫情的“浪漫主义”诗句

    摘要:好吧,我承认太标题党了,这篇文章是通过一道前端面试题引出的纯技术讨论。我先要矫情无比的从中外诗歌说起。这一星期陆陆续续面试了不少于个人,其中不乏工作履历突出的候选者。这样做的问题在于循环并没有要求枚举对象的修改与当前循环保持一致。 好吧,我承认太标题党了,这篇文章是通过一道前端面试题引出的纯技术讨论。我先要矫情无比的从中外诗歌说起。 传统的佛学经典里,被世人熟知的有这样一句话:一花一世...

    JerryZou 评论0 收藏0
  • 由浅入深的前端面试题 和矫情的“浪漫主义”诗句

    摘要:好吧,我承认太标题党了,这篇文章是通过一道前端面试题引出的纯技术讨论。我先要矫情无比的从中外诗歌说起。这一星期陆陆续续面试了不少于个人,其中不乏工作履历突出的候选者。这样做的问题在于循环并没有要求枚举对象的修改与当前循环保持一致。 好吧,我承认太标题党了,这篇文章是通过一道前端面试题引出的纯技术讨论。我先要矫情无比的从中外诗歌说起。 传统的佛学经典里,被世人熟知的有这样一句话:一花一世...

    lk20150415 评论0 收藏0
  • 整理下《前端江湖面试》对自己有益的题目

    摘要:面试题目汇总前言近期在找工作,也在读前端面试江湖这本书,书中整理了很多基础的面试题目,在书中也发现了一些错误。好记性不如烂笔头,于是整理下对自己有益的题目,都是一些较为基础的题目后期还会更新。,返回一个数组,成员为匹配的字符串。 面试题目汇总 前言 近期在找工作,也在读 前端面试江湖 这本书,书中整理了很多基础的面试题目,在书中也发现了一些错误。好记性不如烂笔头,于是整理下对自己有益的...

    hikui 评论0 收藏0
  • 整理下《前端江湖面试》对自己有益的题目

    摘要:面试题目汇总前言近期在找工作,也在读前端面试江湖这本书,书中整理了很多基础的面试题目,在书中也发现了一些错误。好记性不如烂笔头,于是整理下对自己有益的题目,都是一些较为基础的题目后期还会更新。,返回一个数组,成员为匹配的字符串。 面试题目汇总 前言 近期在找工作,也在读 前端面试江湖 这本书,书中整理了很多基础的面试题目,在书中也发现了一些错误。好记性不如烂笔头,于是整理下对自己有益的...

    QLQ 评论0 收藏0
  • 整理下《前端江湖面试》对自己有益的题目

    摘要:面试题目汇总前言近期在找工作,也在读前端面试江湖这本书,书中整理了很多基础的面试题目,在书中也发现了一些错误。好记性不如烂笔头,于是整理下对自己有益的题目,都是一些较为基础的题目后期还会更新。,返回一个数组,成员为匹配的字符串。 面试题目汇总 前言 近期在找工作,也在读 前端面试江湖 这本书,书中整理了很多基础的面试题目,在书中也发现了一些错误。好记性不如烂笔头,于是整理下对自己有益的...

    Terry_Tai 评论0 收藏0
  • 刷《一年半经验,百度、有赞、阿里面试总结》·手记

    摘要:在掘金上看到了一位大佬发了一篇很详细的面试记录文章一年半经验,百度有赞阿里面试总结,为了查漏补缺,抽空就详细做了下。 在掘金上看到了一位大佬发了一篇很详细的面试记录文章-《一年半经验,百度、有赞、阿里面试总结》,为了查漏补缺,抽空就详细做了下。(估计只有我这么无聊了哈哈哈) 有给出的或者有些不完善的答案,也尽力给出/完善了(可能有错,大家自行辨别)。有些很困难的题目(例如实现Promi...

    codeKK 评论0 收藏0

发表评论

0条评论

mikyou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<