第十二天

  • 题目来源: 前端每日知识3+1

Javascript题目

题目 : 看如下代码结果, 并解释其结果?(js)

问题解答

  1. function side(arr) {
  2. arr[0] = arr[2];
  3. }
  4. function a(a, b, c = 3) {
  5. c = 10;
  6. console.log(arguments);
  7. side(arguments);
  8. return a + b + c;
  9. }
  10. console.log(a(1, 1, 1));
  • 结果是12 用到了es6
  1. function side(arr) {
  2. arr[0] = arr[2];
  3. }
  4. function a(a, b, c) {
  5. c = 10;
  6. console.log(arguments);
  7. side(arguments);
  8. return a + b + c;
  9. }
  10. console.log(a(1, 1, 1));
  • 结果是21

解题思路

  • 这里的arguments是一个类数组, 主要是存储函数的参数; 这里这两个结果不同的原因是因为是否给函数传递默认值; 有默认值的情况, 如果是严格模式下, 是不可变的, 参数与arguments也就是深拷贝的关系; 反之可变为浅拷贝(拷贝之地)关系, 没有参数默认值则是可变的浅拷贝

题目 : 看如下代码结果, 并解释其结果?(js) - 图1

知识扩展

说说你对javascript的作用域的理解

  • 作用域就是指的是变量和函数生效(能被访问)的区域和集合, 即作用域决定了代码块中的变量和其他资源的可见性
  • 作用域分为: 全局作用域, 函数作用域(局部作用域)和块级作用域

http常用的状态码

  • 200表示请求成功, 301表示重定向, 4xx表示前端的问题, 5xx表示后端的问题
  • 常用的状态码详解
  • H5中的form如何关闭自动填充/补全的功能 设置form表单属性autocompleteoff

css扩展

  • :::的区别: 第一个表示的是伪类, 第二个表示的伪元素, 第二个是为了区分伪类和伪元素