js面试题 (上)

1.js中let和const有什么用?

在现代js中,let&const是创建变量的不同方式。 在早期的js中,咱们使用 var关键字来创建变量。 let&const关键字是在ES6版本中引入的,其目的是在 js中创建两种不同类型的变量,一种是不可变的,另一种是可变的。

const:它用于创建一个不可变变量。不可变变量是指其值在程序的整个生命周 期中永不改变的变量。
let: let用于创建一个可变变量,可变变量是像var这样的普通变量,可以任意 次数地更改。

2. JS 中的主要有哪几类错误

JS有三类的错误:

加载时错误:加载web页面时出现的错误(如语法错误)称为加载时错误,它会动 态生成错误。

运行时错误:由于滥用html语言中的命令而导致的错误。

逻辑错误:这些错误是由于对具有不同操作的函数执行了错误的逻辑而导致的

3. 如何通过类别名获取 dom 元素

在 JS 中使用document.getElementsByClassName() 方法来获取具有类名 的元素。在这里插入图片描述

4.JS的作用域链是什么及其作用

一般情况下,变量取值到创建这个变量的函数的作用域中取值。但是如果在 当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链
JS中的作用域链主要用于解析变量的值。 如果没有这个,在不同的作用域内定 义了许多变量,JS很难为变量选择某个值。

5.解释JS中的MUL函数

MUL表示数的简单乘法。在这种技术中,将一个值作为参数传递给一个函数, 而该函数将返回另一个函数,将第二个值传递给该函数,然后重复继续。
例 如:xyz可以表示为

function mul (x) {
	 return function (y) { 
 		return function (z) {
 			 return x * y *}
  	} 
  }

6.用纯JS编写一个程序来反转字符串

使用内置函数:内置函数reverse()直接反转字符串。

str="jQuery";
str = str.split("") 
str = str.reverse() 
str = str.join("") alert(str);

首先将字符串拆分为数组,然后反转数组,最近将字符连接起来形成字符串。
使用循环:首先,计算字符串中的字符数,然后对原始字符串应用递减循环,该 循环从最后一个字符开始,打印每个字符,直到count变为零。

7. 列出JS中的一些设计模式:

设计模式是软件设计中常见问题的通用可重用解决方案,以下是一些设计模式 是:
创建模式:该模式抽象了对象实例化过程。
结构型模式:这些模式处理不同的类和对象以提供新功能。
行为模式:也称发布­订阅模式,定义了一个被观察者和多个观察者的、一对多 的对象关系。
并行设计模式:这些模式处理多线程编程范例。
架构设计模式:这些模式用于处理架构设计。

9. JS中的Array.splice()和Array.slice()方法有什么区别

话不多说,来看第一个例子:

var arr=[0,1,2,3,4,5,6,7,8,9];//设置一个数组
 console.log(arr.slice(2,7));//2,3,4,5,6 
 console.log(arr.splice(2,7));//2,3,4,5,6,7,8

//由此我们简单推测数量两个函数参数的意义,
slice(start,end)第一个参数表示开始位置,第二个表示截取到的位置(不包 含该位置) splice(start,length)第一个参数开始位置,第二个参数截取长度 接着看第

var x=y=[0,1,2,3,4,5,6,7,8,9] 
console.log(x.slice(2,5));//2,3,4 
console.log(x);[0,1,2,3,4,5,6,7,8,9]
原数组并未改变 
//接下来用同样方式测试
splice console.log(y.splice(2,5));//2,3,4,5,6 
console.log(y);//[0,1,7,8,9]
显示原数组中的数值被剔除掉了

slice和splice虽然都是对于数组对象进行截取,但是二者还是存在明显区别,函数 参数上slice和splice第一个参数都是截取开始位置,slice第二个参数是截取的结束位置(不包含),而splice第二个参数(表示这个从开始位置截取的长度),slice不 会对原数组产生变化,而splice会直接剔除原数组中的截取数据!

9.如何在JS中动态添加/删除对象的属性?

咱们可以使用object.property_name = value向对象添加属性,delete object.property_name 用于删除属性。 例如:

let user = new Object();
 // adding a property
user.name='Anil'; 
user.age =25;
console.log(user); 
delete user.age; 
console.log(user);

10.解释一下什么是 promise ?

promise是js中的一个对象,用于生成可能在将来产生结果的值。 值可以是已 解析的值,也可以是说明为什么未解析该值的原因。

promise 可以有三种状态:

pending:初始状态,既不是成功也不是失败

fulfilled:意味着操作完全成功

rejected:意味着操作失败

一个等待状态的promise对象能够成功后返回一个值,也能失败后带回一个错误 当这两种情况发生的时候,处理函数会排队执行通过then方法会被调用。

11. 数组去重复的方法有哪些

1.使用 set

function uniquearray(array) { 
		let unique_array= Array.from(set(array)) 
		return unique_array;
 }

2.使用 filter

function unque_array (arr) { 
		let unique_array = arr.filter(function(elem, index, self) {
			 return index == self.indexOf(elem);
	  })
 		 return unique_array;
   }
  console.log(unique_array(array_with_duplicates));

3.使用 for 循环

Array dups_names = ['Ron', 'Pal', 'Fred', 'Rongo', 'Ron'];
 function dups_array(dups_names) { 
 	let unique = {};
 	names.forEach(function(i) { 
 		If (!unique[i]) { unique[i] = true; }
 		 });
 	 return Object.keys(unique);}
 	  // Ron, Pal, Fred, Rongo Dups_array(names);

12. undefined,null 和 undeclared 有什么区别?

1.null表示"没有对象",即该处不应该有值,转为数值时为0。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
2.undefined表示"缺少值",就是此处应该有一个值,但是还没有定义,转为数 值时为NaN。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。

3.undeclared:js语法错误,没有申明直接使用,js无法找到对应的上下文。

13.列出JS基本和非基本数据类型之间的一些区别?

  1. 目前JS中有6种基本数据类型: Undefined、Null、Boolean、Number、 Symbol 和 String。还有1种复杂的数据类型————Object,Object本质上 是由一组无序的名值对组成的。Object、Array和Function则属于引用类型。
  2. 基本数据类型是不可变的,而非基本数据类型是可变的。
  3. 基本数据类型是不可变的,因为它们一旦创建就无法更改,但非基本数据类型 刚可更改,意味着一旦创建了对象,就可以更改它。
  4. 将基本数据类型与其值进行比较,这意味着如果两个值具有相同的数据类型并 具有相同的值,那么它们是严格相等的。
  5. .非基本数据类型不与值进行比较。例如,如果两个对象具有相同的属性和值, 则它们严格不相等。

14. 如何在现有函数中添加新属性

只需给现有函数赋值,就可以很容易地在现有函数中添加新属性。例如,现有一 个对象person,通过下面的代码来为 person 添加新的属性:

 person.country= “India”;

15. JS中的深拷贝与浅拷贝的区别?

深拷贝递归地复制新对象中的所有值或属性,而拷贝只复制引用。
在深拷贝中,新对象中的更改不会影响原始对象,而在浅拷贝中,新对象中的更 改,原始对象中也会跟着改。
在深拷贝中,原始对象不与新对象共享相同的属性,而在浅拷贝中,它们具有相 同的属性。

16. 如何在JavaScript中每x秒调用一个函数

在JS中,咱们使用函数 setInterval() 在每x秒内调用函数。如:

setInterval(function (){
	 alert("Hello"); 
 }, 3000);
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值