您现在的位置是:首页 > 正文

web考核题

2024-04-01 05:38:58阅读 3

第一题.(5分)

JavaScript中的数据类型有哪几种?并写出判断数据类型的方法

题解:

Number、Boolean、String、Undefined、Null、object

typeof可以用来检测变量的数据类型

第二题.(5分)

简述一下let,var,const的区别;

题解:

var:全局作用域,声明变量提升

let:块级作用域,声明变量不会被提升,不允许重复声明

const:块级作用域,定义后值不能修改,声明变量不会被提升

第三题.(5分)

JavaScript中call,apply,bind的区别和用法

题解:

call: 是函数对象的方法,用于在指定的上下文中调用函数。它接受一个参数列表,第一个参数是要设置为函数上下文的对象,其余参数是函数的参数。call会立即调用函数。

apple:在指定的上下文中调用函数,接受一个参数数组作为参数,而不是一个参数列表,也会立即调用函数

bind:用于创建一个新的函数,它与原始函数具有相同的功能,但永久性地绑定到指定的上下文。不会立即调用函数,可以接受参数,这些参数会被传递给原始函数

第四题.(5分)

JavaScript对象创建的方式有哪些?

题解:

利用对象字面量创建

 //利用对象字面量创建对象  {}
        var obj = {};  //创建了一个空的对象
        var obj = {
            unname: '',
            age: '',
            sex: '',
            height: '',
            sayHi: function() {
                console.log(12);
            }
        }

里面属性或者方法采取键值对形式

多个属性或者方法之间用逗号隔开

方法冒号后面跟的是一个匿名函数

利用new Object创建对象

 // 利用new Object()  创建对象
        var obj = new Object();   //创建一个空的对象
        obj.uname = 'zhang';
        obj.age = 18;
        obj.sayHi = function() {
            console.log(12);
        }

(1)利用等号赋值的方法添加对象的属性和方法

(2)每个属性和方法之间用分号

利用构造函数创建对象

// 利用构造函数创建对象
        // 前两种方法一次只能创建一个对象
        function  构造函数名() {
            this.属性 =;
            this.方法 = function() {}
        }
        new 构造函数名();
        // 构造函数  把对象里面的一些相同属性的方法和属性抽象出来封装到函数里面

(1).构造函数名字首字母大写

(2).我们构造函数不需要return就可以返回结果

调用函数返回的是一个对象

利用new关键字调用函数的行为叫实例化

(3).调用构造函数,必须使用new

(4).我们只要new Star()调用函数就创建了一个对象 ldh{}

(5).我们属性和方法前面必须添加this

第五题.(5分)

简述一下浏览器的垃圾回收机制

题解:

js中内存的分配和回收都是自动完成的,内存在不使用的时候会被垃圾回收器自动回收

内存的生命周期:
内存分配:声明变量或函数时,系统会自动分配内存

内存使用:读写内存,也就是使用变量、函数

内存回收:使用完毕,由垃圾回收器自动回收不再使用的内存

全局变量在页面关闭时回收

局部变量的值在不用时自动回收掉

内存泄漏:程序中分配的内存由于某种原因未释放或无法释放叫内存泄漏

两种垃圾回收算法: 引用计数法 标记清除法

引用计数法:看一个对象是否有指向它的引用,没有引用了就回收对象

存在问题:嵌套引用,如果两个对象向相互引用,尽管已经不再使用,垃圾回收器不会进行回收,导致内存泄漏

因为他们引用的次数永远不会是0

标记清除法:将“不再使用的对象”定义为“无法到达的对象”

从根部出发定时扫描内存的中的对象,凡是能从根部到达的对象。都是还需要的对象

无法从根部触及到的对象被标记为不再使用,稍后进行回收

第六题.(5分)

New操作符执行过程

题解:

1.创建一个新的空对象

2.将新对象的原型指向构造函数的原型

3.执行构造函数

4.返回新对象

第七题.(10分)

已知如下数组,编写一个程序将数组扁平化去并除其中重复部分数据,最终得 到一个不重复的数组

如var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]

化为:arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

题解:

function splitAndFlatten(arr) {
  const flatArray = arr.toString().split(',').map(Number);
  return Array.from(new Set(flatArray));
}

上述函数先将数组按[]进行分割之后再对其进行去重处理。

二.代码输出题(40分)

第八题.(10分)()()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

题解:2

因为调用了两次函数,第一次调用b的值为1,但a的值变为2

所以在第二次调用后b的值变为2.

第九题(10分)(事件循环机制)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

题解:

1、4、5、7、6、3、2

先根据顺序输出1、4,然后new promise是一个同步操作,然后输出里面的5,然后将then里面的内容放在异步栈中,最后输出7,在同步任务进行完后,开始进行异步操作,而异步操作分为微任务和宏任务,then属于微任务所以先执行,输出6,然后再执行计时器,根据时间输出。

第十题.(10分)(作用域和this指向)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

person1:普通调用函数,this指向调用它的函数

window:箭头函数中this与普通函数完全不同,也不受调用方式的影响,事实上箭头函数并不存在this

1.箭头函数中的this引用就是最近作用域的this

2.向外层作用域中一层一层找this,知道由this定义

window:两个函数构成立即执行函数,其this指向全局作用域

person1:里面的this指向外层作用域的this,所以指向上一层的person1

window:箭头函数this只指向外层作用域,不受call、bind和apply的影响

第十一题(10分)(变量)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

题解: 0~10

functionArray里面存的是一个函数用来打印i的值

在上面循环结束时i的值时10,所以最后打印的是10

网站文章

  • unity调用系统输入法复制功能

    代码 static void CopyString(string str) { TextEditor te = new TextEditor(); te.text = str; te.SelectAll(); te.Copy(); } 可以直接复制指定字符串内容。

    2024-04-01 05:38:14
  • Promise.prototype.finally(ES9)

    Promise.prototype.finallyPromise.prototype.finally()场景1:loading关闭场景2:数据库断开链接Promise.prototype.finall...

    2024-04-01 05:38:06
  • Java中@Scheduled定时任务详解

    Java中@Scheduled定时任务详解

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:(1) Seconds Minutes Hours DayofMonth Mon...

    2024-04-01 05:37:58
  • Android 动态设置RadioButton选中和没选中的颜色及设置默认选中某一项

    关于RadioButton动态设置背景颜色和字体颜色,踩过好多坑,接下来我总结一下遇到的所有问题及解决方案,供大家参考下,希望对大家有帮助。

    2024-04-01 05:37:53
  • 【BUUCTF】CTF_Crypto 密码学_Quoted-printable(引用可打印)

    【BUUCTF】CTF_Crypto 密码学_Quoted-printable(引用可打印)

    Quoted-Printable编码可译为“可打印字符引用编码”,或者“使用可打印字符的编码”。通常我们接收电子邮件,查看电子邮件原始信息,经常会看到这种类型的编码,电子邮件信头显示它是多用途互联网邮...

    2024-04-01 05:37:12
  • vue nginx部署

    #user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_lo...

    2024-04-01 05:37:05
  • 【内网攻防】| vulntarget漏洞靶场系列(二)

    【内网攻防】| vulntarget漏洞靶场系列(二)

    点击星标,即时接收最新推文文章来源|MS08067 内网攻防 知识星球本文作者:godunt玩靶场 认准内网攻防目前,安全行业热度逐年增加,很多新手安全从业人员在获取技术知识时,会局限于少量的实战中,...

    2024-04-01 05:36:57
  • 华科计算机全qs球排名,武汉这2所高校三榜世界大学排名均列全球500强

    华科计算机全qs球排名,武汉这2所高校三榜世界大学排名均列全球500强

    原标题:最厉害的三个“全球500强”,武汉这两所高校都上榜了!在最新发布的软科2019世界大学学术排名QS2020世界大学排名U.S.News2019全球最佳大学排名中22所中国内地高校均列500强其...

    2024-04-01 05:36:17
  • linux驱动匹配条件

    linux设备驱动必须匹配内核版本x86上面主要有两大类驱动,pci和usb主要看厂家id和设备id具备这两个条件就可以只能去厂家官网找对应设备,是否提供相应系统的驱动转载于:https://www.cnblogs.com/qijunzifeng/p/11343904.html...

    2024-04-01 05:36:11
  • Qt: 在SLOT中获取sender(触发SIGNAL的控件)

    Qt开发,有个场景是点击三个不同的按钮,触发同一个事件(SLOT),要在SLOT方法中区分三个不同的按钮:那么怎样在SLOT中获取当前的sender呢?网上查到了答案。用sender()方法:参考:In qml, How can i get signal sender from slot/function? | Qt Forum...

    2024-04-01 05:36:04