html&css&js专项练习中我的错题集

1

(function() {
      var a = b = 5;
  })();   
console.log(b);
console.log(a);

输出为5,Uncaught ReferenceError: a is not defined

考点:var a=b=5相当于var a=b;b=5;b前面没有var,说明是声明为全局变量。
相当于:

var b;
(function() {
      var a=b ;
      b=5;
  })();   
console.log(b);
console.log(a);

在函数外,a就被销毁,所以报错

2、

var f = function g() {
        return 23;
    };
typeof g();

如果是typeof f,结果是function
如果是typeof f(),结果是number
如果是typeof g,结果是undefined.
如果是typeof g(),结果是ReferenceError,g is not defined

在 JS 里,声明函数只有 2 种方法:
第 1 种: function foo(){...} (函数声明)
第 2 种: var foo = function(){...} (等号后面必须是匿名函数,这句实质是函数表达式)

除此之外,类似于 var foo = function bar(){...} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。

3、

图片说明
图片说明

4

图片说明

5

图片说明

6

图片说明

7

图片说明

8

图片说明
图片说明
图片说明
图片说明

9

图片说明
stopPropagation() 阻止事件冒泡。 这个事件不会阻止定义在元素上的其他事件。
stopImmediatePropagation() 会彻底的阻止事件, 在其之后的绑定在元素上的其他监听事件都不会触发
preventDefault() 阻止事件的默认动作
图片说明
此处click没有什么默认行为,阻止冒泡的话不是这个

10

图片说明
图片说明

11

图片说明
3个没有回收
代码回收规则如下:
1.全局变量不会被回收。----第二行声明的i没有回收
2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。
3.只要被另外一个作用域所引用就不会被回收

----第一行的i没有被回收,第二行声明的var被忽略,但是给i赋值为2
----var add也没有回收
----闭包中的i没有被回收

12

图片说明
图片说明

13

图片说明

  1. Array 对象方法方法 concat() 连接两个或更多的数组,并返回结果。
  2. join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
  3. pop() 删除并返回数组的最后一个元素
  4. push() 向数组的末尾添加一个或更多元素,并返回新的长度。
  5. reverse() 颠倒数组中元素的顺序。
  6. shift() 删除并返回数组的第一个元素
  7. slice() 从某个已有的数组返回选定的元素
  8. sort() 对数组的元素进行排序
  9. splice() 删除元素,并向数组添加新元素。
  10. toSource() 返回该对象的源代码。
  11. toString() 把数组转换为字符串,并返回结果。
  12. toLocaleString() 把数组转换为本地数组,并返回结果。
  13. unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
  14. valueOf() 返回数组对象的原始值

14

图片说明
图片说明

15

图片说明
2.toString()将会优先将小数点解析为数字小数点
2..toString()因为连续的两个小数点不符合number的格式规则,第二个小数点才会被解析为调用方法

15

图片说明
图片说明

16

图片说明
会报错
因为函数提升高于变量提升,调用函数的时候a已经不是函数

全部评论

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务