常见JS面试相关问题

1,let和const的区别
在js中,let和const是创建变量的不同方式。 在早期的js中,咱们使用var关键字来创建变量。 let和const关键字是在ES6版本中引入的,其目的是在js中创建两种不同类型的变量,一种是不可变的,另一种是可变的。
const:它用于创建一个不可变变量。不可变变量是指其值在程序的整个生命周期中永不改变的变量。
let: let用于创建一个可变变量,可变变量是像var这样的普通变量,可以任意次数地更改。
2,用纯JS编写一个程序来反转字符串
使用内置函数reverse()直接反转字符串。
首先将字符串拆分为数组,然后反转数组,最近将字符连接起来形成字符串。
str=“jQuery”;
str = str.split("")
str = str.reverse()
str = str.join("")
alert(str);
3, 列出JS中的一些设计模式:
设计模式是软件设计中常见问题的通用可重用解决方案,以下是一些设计模式是:
创建模式:该模式抽象了对象实例化过程。
结构型模式:这些模式处理不同的类和对象以提供新功能。
行为模式:也称发布-订阅模式,定义了一个被观察者和多个观察者的、一对多的对象关系。
并行设计模式:这些模式处理多线程编程范例。
架构设计模式:这些模式用于处理架构设计。
4,JS中的Array.splice()和Array.slice()方法有什么区别
slice和splice虽然都是对于数组对象进行截取,但是二者还是存在明显区别,函数参数上slice和splice第一个参数都是截取开始位置,slice第二个参数是截取的结束位置(不包含),而splice第二个参数(表示这个从开始位置截取的长度),slice不会对原数组产生变化,而splice会直接剔除原数组中的截取数据!
5,promise
promise是js中的一个对象,用于生成可能在将来产生结果的值。 值可以是已解析的值,也可以是说明为什么未解析该值的原因。
promise 可以有三种状态:

pending:初始状态,既不是成功也不是失败
fulfilled:意味着操作完全成功
rejected:意味着操作失败

一个等待状态的promise对象能够成功后返回一个值,也能失败后带回一个错误
当这两种情况发生的时候,处理函数会排队执行通过then方法会被调用
6,数组去重
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);

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

 b,在深拷贝中,新对象中的更改不会影响原始对象,而在浅拷贝中,新对象中的更改,原始对象中也会跟着改。

 c,  在深拷贝中,原始对象不与新对象共享相同的属性,而在浅拷贝中,它们具有相同的属性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值