自用前端考题(持续更新)

自用前端考题(持续更新),第1张

其它题点这里

目录 1.数据类型3.js作用域6.js对象9.JS作用域+this指向+原型的考题13.JS判断变量是不是数组方式一:isArray方式二:instanceof 【可写,可不写】方式三:原型prototype 方式四:isPrototypeOf() 14.JS数组去重方式一:new set方式二:indexOf 15.找出多维数组最大值16.给字符串新增方法实现功能17.找出字符串出现最多次数的字符以及次数18.new *** 作符具体做了什么!!!19.作用域考题21.将下列对象进行合并

1.数据类型
console.log( true + 1 );     			//2
console.log( 'name'+true );  			//nametrue
console.log( undefined + 1 ); 		//NaN
console.log( typeof undefined ); //undefined
console.log( typeof(NaN) );       //number
console.log( typeof(null) );      //object
3.js作用域
function c(){
	var b = 1;
	function a(){//相当于这里有var b;
		console.log( b );//undefined
		var b = 2;
		console.log( b );//2
	}
	a();
	console.log( b );//1
}
c();
var name = 'a';
(function(){
	if( typeof name == 'undefined' ){
		var name = 'b';
		console.log('111'+name);
	}else{
		console.log('222'+name);
	}
})()//111b
function fun( a ){
	var a = 10;
	function a(){}
	console.log( a );
}
fun( 100 );//10
6.js对象

查找规则:先在对象本身找 ===> 构造函数中找 ===> 对象原型中找 ===> 构造函数原型中找 ===> 对象上一层原型查找

 [1,2,3] === [1,2,3]   //false
var obj1 = {
	a:'hellow'
}
var obj2 = obj1;
obj2.a = 'world';
console.log(obj1); 	//{a:world}
(function(){
	console.log(a); 	//undefined
	var a = 1;
})();
var a = {}
var b = {
	key:'a'
}
var c = {
	key:'c'
}
a[b] = '123';
a[c] = '456';//因为a里加的都是对象[obj1 obj2:123],[obj1 obj2:456];后者覆盖前者
console.log( a[b] ); // 456
9.JS作用域+this指向+原型的考题
function Foo(){
	getName = function(){console.log(1)} //注意是全局的window.
	return this;
}

Foo.getName = function(){console.log(2)}
Foo.prototype.getName = function(){console.log(3)}
var getName = function(){console.log(4)}
function getName(){
	console.log(5)
}

Foo.getName();    //2
getName(); 		  //4
Foo().getName();  //1
getName();		  //1
new Foo().getName();//3
var o = {
	a:10,
	b:{
		a:2,
		fn:function(){
			console.log( this.a ); // 2
			console.log( this );   //代表b对象
		}
	}
}
o.b.fn();
window.name = 'ByteDance';
function A(){
	this.name = 123; //this指向window
}
A.prototype.getA = function(){
	console.log( this );
	return this.name + 1;  
}
let a = new A();
let funcA = a.getA;
funcA();  //this代表window  ByteDance1
var length = 10;
function fn(){
	return this.length + 1;		//this指向window
}
var obj = {
	length:5,
	test1:function(){
		return fn();
	}
}
obj.test2 = fn;
console.log( obj.test1() ); 							//1
console.log( fn()===obj.test2() ); 				//false 11和6 this指向不一样
console.log( obj.test1() == obj.test2() ); //false
13.JS判断变量是不是数组 方式一:isArray
var arr = [1,2,3];
console.log( Array.isArray( arr ) );
方式二:instanceof 【可写,可不写】
var arr = [1,2,3];
console.log( arr instanceof Array );
方式三:原型prototype
var arr = [1,2,3];
console.log( Object.prototype.toString.call(arr).indexOf('Array') > -1 );
方式四:isPrototypeOf()
var arr = [1,2,3];
console.log(  Array.prototype.isPrototypeOf(arr) )
14.JS数组去重 方式一:new set
var arr1 = [1,2,3,2,4,1];
function unique(arr){
	return [...new Set(arr)]
}
console.log(  unique(arr1) );
方式二:indexOf
var arr2 = [1,2,3,2,4,1];
function unique( arr ){
	var brr = [];
	for( var i=0;i
15.找出多维数组最大值
function fnArr(arr){
	var newArr = [];
	arr.forEach((item,index)=>{
		newArr.push( Math.max(...item)  )
	})
	return newArr;
}
console.log(fnArr([
	[4,5,1,3],
	[13,27,18,26],
	[32,35,37,39],
	[1000,1001,857,1]
]));
16.给字符串新增方法实现功能

给字符串对象定义一个addPrefix函数,当传入一个字符串str时,它会返回新的带有指定前缀的字符串,例如:

console.log( ‘world’.addPrefix(‘hello’) ) 控制台会输出helloworld

String.prototype.addPrefix = function(str){
	return str  + this;
}
console.log( 'world'.addPrefix('hello') )
17.找出字符串出现最多次数的字符以及次数
var str = 'aaabbbbbccddddddddddx';
var obj = {};
for(var i=0;i
18.new *** 作符具体做了什么!!!
1. 创建了一个空的对象
2. 将空对象的原型,指向于构造函数的原型
3. 将空对象作为构造函数的上下文(改变this指向)
4. 对构造函数有返回值的处理判断(基本类型就忽略 ,引用类型就覆盖)
19.作用域考题
function demo(){
	var n = 2;
	if( true ){
		var n = 1;
	}
	console.log( n );//1
}
demo();


function demo(){
	let n = 2;
	if( true ){
		let n = 1;
	}
	console.log( n );//2
}
demo();
const obj = {
	a:1
}
obj.a = 11111;//obj改不了、obj的内容可以改
console.log( obj )

const arr = ['a','b','c'];
arr[0]= 'aaaaa';
console.log( arr );
21.将下列对象进行合并

方式一:Object.assign

const a = {a:1,b:4};
const b = {b:2,c:3};

let obj1 = Object.assign(a,b);
console.log( obj1 );

方式二:…

let obj2 = {...a,...b};
console.log( obj2 );

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1297686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)