IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 牛客错题整理 -> 正文阅读

[JavaScript知识库]牛客错题整理

1.new 构造函数究竟做了什么

只要能理解new 构造函数究竟做了什么就行了

  1. 创建一个空对象
  2. 将空对象的原型设置为构造函数的原型
  3. 改变空对象的this指向为构造函数,并执行构造函数,将其中的成员变量更新到空对象中
  4. 返回这个空对象

对应的代码类似这样:

var obj = {};
obj.__proto__ = F.prototype;
F.call(obj);
return obj;

所以最后返回的obj只跟Object有关系

  1. 本身obj为对象,在成员中找不到a属性,就沿着原型链查找F.prototype,这里也没有,继续沿着链找Object.prototype
  2. 所以跟Function链没啥关系

2.this对象的理解正确的是

  1. 在不手动改变this指向的前提下,this总是指向函数的直接调用者。
  2. 如果有new关键字,this指向new出来的那个对象。
  3. IE中attachEvent中的this总是指向全局对象。
  4. 在事件中,this指向触发这个事件的对象(特殊的是:在IE中attachEvent中的this总是指向全局对象 window)

3. 关于几种特殊的值转Number和Boolean的情况

!!String("") // 返回false
!!Boolean("") // 返回false
!!Number("") // 返回true

!!Boolean([]) // 返回true
!!String([]) // 返回false
!!Number([]) //false

!!String(0) // 返回true #被转为字符串"0"
!!Number(0) // 返回false
!!Boolean(0) // 返回false

[] 转为字符串是 “” // String([]) 返回""
[] 转为数字是 0 // Number([]) 返回0
[] 转为布尔值是 true // Boolean([]) 返回true
true 转为数字是 1 // Number(true) 返回1
false 转为数字是 0 // Number(false) 返回0

相等运算符(== ),两个操作数类型不同时,会进行隐式转换

1 == true // 布尔值会转成number true即为1 所以结果是true
2 == true // 布尔值会转成number true即为1 所以结果是false
3 == true // 布尔值会转成number true即为1 所以结果是false
1 == false // 布尔值会转成number false即为0 所以结果是false
0 == false // 布尔值会转成number false即为0 所以结果是true
B、数字字符串2会转换成数字2在和数字2进行比较 。
== js会优先选择将字符串转成数字==
C、Javascript规范中提到, 要比较相等性之前,不能将null和undefined转换成其他任何值,并且规定null和undefined是相等的。null和undefined都代表着无效的值。
D、isNaN() 函数用于检查其参数是否是非数字值。

如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

  1. null与undefined在与其他数相等运算时不进行类型转换
  2. undefined和null与任何有意义的值比较返回的都是false,但是null与undefined之间互相比较返回的是true。
  3. null和undefined,关于它们更多的是记住规则:(1)null == undefined (2)null与undefined不能进行类型转换(换句话说不能进行类型转换,那么怎么能进行同其他类型的比较呢?那自然就是false了

在这里插入图片描述在这里插入图片描述

4.javaScript的全局函数

javaScript的全局函数 ?

个人记忆方法:6(编码相关)+ 2(数据处理)+ 4(数字相关)+ 1(特殊)

编码相关:

escape()、unescape()、encodeURI()、decodeURI()、

encodeURIComponent()、decodeURIComponent()

数据处理:

Number()、String()

数字相关:

isFinite()、isNaN()、parseFloat()、parseInt()

特殊: eval()
ps:对于 getClass() 方法不确定,菜鸟教程上没有,Chrome 控制台也没提示。
在这里插入图片描述

5.运算

2<1<3是为真吗? 2<1会显示false,而false在js中会被转换为0,那么后面那句就变成了0<3,显然显示是true

6.getData()和Data()

来自W3C关于Date 对象方法的说明: Date() 返回当日的日期和时间。 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 getYear() 从 Date 对象以四位数字返回年份。 getTime() 返回 1970 年 1 月 1 日至今的毫秒数。

7.逗号表达式只有最后一项是有效的

逗号表达式只有最后一项是有效的,即对于i<10,j<6; 来说,判断循环是否结束的是 j < 6;而对于 j<6,i<10; 来说,判断循环是否结束的是 i < 10。
var k = 0;
for(var i=0,j=0;i<10,j<6;i++,j++){
k += i + j;
}
console.log(k) // 打印结果为 30
var k = 0;
for(var i=0,j=0;j<6,i<10;i++,j++){
k += i + j;
}
console.log(k) // 打印结果为 90

8.js与EMACScript

完整的 JavaScript 实现应该由三部分组成:
核心(ECMAScript)
文档对象模型(DOM)
浏览器模型(BOM)
EMACScript 只是定义了基础的语法和语义的标准,跟具体的浏览器环境没有关系。
也就是说 EMACScript 来源于 JavaScript,又反向作为 JavaScript 的标准

9.css相关

1.Readonly与disabled

Readonly只针对input(text/password)和textarea有效,而disabled对于所有的表单元素有效,包括select,radio,checkbox,button等。

10.同步模式与异步模式,

(1)同步模式:就是后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的。

(2)异步模式:完全不同,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数, 后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。

JavaScript中实现异步编程模式的4种方法,回调函数、事件监听、发布/订阅、Promises对象:

(1)回调函数:这是异步编程最基本的方法,优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个部分之间高度(Coupling),流程会很混乱,而且每个任务只能指定一个回调函数。

? 例:假定有两个函数f1和f2,后者等待前者的执行结果,如果f1是一个很耗时的任务,可以考虑改写f1,把f2写成f1的回调函数。

(2)事件监听:任务的执行不取决于代码的顺序,而取决于某个事件是否发生。优点是比较容易理解,可以绑定多个事件,每个事件可以指定 多个回调函数,而且可以”去耦合”(Decoupling),有利于实现模块化。缺点是整个程序都要变成事件驱动型,运行流程会变 得很不清晰。

? 例:为f1绑定一个事件,当f1发生done事件,就执行f2。

(3)发布/订阅:我们假定,存在一个”信号中心”,某个任务执行完成,就向信号中心”发布”(publish)一个信号,其他任务可以向信号中心”订 阅”(subscribe)这个信号,从而知道什么时候自己可以开始执行。这就叫做”发布/订阅模式”(publish-subscribe pattern),又称”观察者模式”(observer pattern)。 这种方法的性质与”事件监听”类似,但是明显优于后者。因为我们可以通过查看”消息中心”,了解存在多少信号、每个信号有多少订阅者,从而监控程序的运行。

(4)Promises对象:是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口。简单说,它的思想是,每一个异步任务返回一Promise对象,该对象有一个then方法,允许指定回调函数。回调函数变成了链式写法,程序的流程可以看得很清楚,而 且有一整套的配套方法,可以实现许多强大的功能。

例:f1的回调函数f2,f1().then(f2);

11.

function checkState(){

alert(“liyuming”);

}

window.setTimeout(checkState(), 10000); //立即被调用

window.setTimeout(checkState, 10000); // 10s后被调用

window.setTimeout(“checkState()”, 10000); //10s后被调用 注意和第一个的区别 有引号

12.vue生命周期

请添加图片描述请添加图片描述

13.原型图

请添加图片描述

14.错题图记

请添加图片描述
请添加图片描述在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:32:40  更:2021-11-19 17:33:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 22:26:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码