前端工程师笔试题目-js篇

简介: 前端工程师笔试题目-js篇

1、js预编译


步骤:


  • 1、创建AO对象(AO:{})
  • 2、找到形参和对象的声明(abc),作为对象的属性名,值为undifined
  • 3、实参和形参相统一(a=1,b=2)
  • 4、找到函数声明,会覆盖变量的声明(a=function a() { },b=function b() { })


习题:

<script>
  function test(a, b) {
    console.log(a)  //  function a() { }
    var a = 123
    console.log(a)  //  123
    console.log(b)  //  function b() { }
    function a() { }
    if (false) { var c = 123 } //  为假,不执行
    console.log(c)  //  undefined
    var c = function () { }
    console.log(c)  //  function () { }
    var b = 123
    console.log(b)  //  123
    function b() { }
  }
  test(1, 2)
  // - 预编译
  // - 1、创建AO对象
  // - 2、找到形参和对象的声明,作为对象的属性名,值为undifined
  AO: {
    a: undefined
    b: undefined
    c: undefined
  }
  // - 3、实参和形参相统一
  AO: {
    a: undefined, 1
    b: undefined, 2
    c: undefined
  }
  // - 4、找到函数声明,会覆盖变量的声明,(var c = function () { }是定义,不是声明)
  AO: {
    a: undefined, 1, function a() { }
    b: undefined, 2, function b() { }
    c: undefined
  }
</script>


2、js-this


  • 1、函数被直接调用:fun.call(window)
  • 2、函数作为对象被调用:fun.run.call(fun)


习题:

<script>
  //  1、在函数中直接使用
  function get(content) {
    console.log(content)
  }
  get('hello,world')  //  1、相当于  get.call(window, 'hello,world')
  //  2、函数作为对象被调用
  var person = {
    name: 'jasmine',
    run: function (time) {
      console.log(`${this.name},${time}`)
    }
  }
  person.run(30)  //  2、相当于  person.run.call(person,30)
  var name = 222
  var a = {
    name: 111,
    say: function () {
      console.log(this.name)
    }
  }
  var fun = a.say
  fun()    //  1、相当于  fun.call(window),结果为:222
  a.say()  //  2、相当于  a.say.call(a),结果为:111
  var b = {
    name: 333,
    say: function (fun) {
      fun()
    }
  }
  b.say(a.say)  //  1、fun()  相当于  fun.call(window),结果为:222
  b.say = a.say
  b.say()  //  2、相当于  b.say.call(b),结果为:333
</script>

3、js箭头函数的this


  • 简言之,一句话:箭头函数的this就是外层代码块的this,箭头函数不能当作构造函数
<script>
  //  简言之,一句话:箭头函数的this就是外层代码块的this,箭头函数不能当作构造函数
  var a = 111
  var test = {
    a: 222,
    say: () => {
      console.log(this.a)
    }
  }
  test.say()  //  say()函数跟test对象平级,所以调用a=111,结果为:111
  var test = {
    a: 333,
    say: function () {
      console.log(this.a)
    }
  }
  test.say()  //  say()函数写在function里面,say()函数比test对象低一级,所以调用a=333,结果为:333
</script>


相关文章
|
6月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
266 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
10月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
203 1
|
5月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
191 8
|
5月前
|
JavaScript 前端开发 容器
|
5月前
|
JavaScript 前端开发
|
5月前
|
存储 JavaScript 前端开发
|
5月前
|
移动开发 JavaScript 前端开发
|
5月前
|
存储 JavaScript 前端开发
|
5月前
|
JavaScript 前端开发
|
5月前
|
JavaScript 前端开发

热门文章

最新文章