淘先锋技术网

首页 1 2 3 4 5 6 7

js基础面试题

JS中都有哪些数据类型

答案:基本数据类型有六种:number,null,undefined,boolean,string,symbol
复合类型两种:object,function

typeof可以返回哪些数据类型

答案:string,number,boolean,undefined,object,function

console.log(typeof "11");string
console.log(typeof 11);number
console.log(typeof true);boolean
console.log(typeof undefined);undefined
console.log(typeof null);object
console.log(typeof []);object
console.log(typeof {});object
function fn() {}
console.log(typeof fn);function

列举4钟强制类型转换和多种隐式类型转换

答案:强制:parseInt(),parseFloat(),Number(),Boolean()
隐式

//强制类型转换
console.log(typeof parseInt("22.33"));
console.log(typeof parseFloat("22.433"));
console.log(typeof Number("11.22"));
console.log(typeof Boolean("11.22"));
隐式类型转换:== === > < !=

使用哪些可以用来判断一个变量是否为对象数组

Object.prototype.toString.call(变量);instanceof;Array.isArray();最好使用第一个原生方法兼容性好,其次instanceof;Array.isArray();
注意:Object.prototype.toString(变量)和变量.toString()是不一样的方法

console.log(Object.prototype.toString.call(变量));
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call({}));//[object Object]
console.log(Object.prototype.toString.call(函数));//[object Function]
console.log(变量instanceof Object);
console.log(Array.isArray(变量));

jquery $.each 和for怎么跳出循环终止本次循环

1、for循环中我们使用continue;终止本次循环计入下一个循环,使用break终止整个循环。
2、而在jquery中 $.each则对应的使用return true 和return false。
3、continue与break的区别是:break是彻底结束循环,而continue是结束本次循环

jquery对象和DOM对象转换

DOM对象===>JQuery对象 转换 $(DOM对象)
JQuery对象===> DOM对象 转换 jQuery对象[索引值] JQuery对象.get(索引值) 

获取多选框被选中的个数

jq获取方式
(类名:checked).size() 

下面执行出什么值

var obj = {
      aa: "11",
      bb: function () {
        var that = this;
        console.log(this.aa);//11
        console.log(that.aa);//11
        (function () {
          console.log(this.aa);//undefined
          console.log(that.aa);//11

        })()
      }
    }
    obj.bb()

js编码面试题

1.通过正则表达式检查某段字符串是否以http或https开头。

console.log(/^https?:\/\//.test("https://"));
console.log(/^https?:\/\//.test("http://"));

2.假设某个数组的元素全是数字,请编写代码找出该数组中的重复元素。

方法1function duplicates(arr) {
      var result = [];
      arr.forEach(function (item) {
        if (arr.indexOf(item) != arr.lastIndexOf(item) && result.indexOf(item) == -1)
          result.push(item);
      })
      return result;
    }

    console.log(duplicates([1, 2, 2, 2, 4, 5, 4, 6, 7, 6]).sort());
方法2function res(arr) {
  var temp = [];
  arr.sort().sort(function (a, b) {
    if (a === b && temp.indexOf(a) === -1) {
      temp.push(a);
    }
  });
  return temp;
}
var arr = [1, 2, 4, 4, 3, 3, 1, 5, 3];
console.log(res(arr));

3.a、b、c都是执行异步操作的函数,请通过Promise、async、await 实现:a、b并行执行完毕后再执行c。

function a(callback){ setTimeout(callback,10);}
function b(callback){ setTimeout(callback,20);}
function c(callback){ setTimeout(callback,30);}

es5的数组去重

[1,3,4,5,1,2,3,3,4,8,90,3,0,5,4,0].filter(function(elem,index,Array){
   return index === Array.indexOf(elem);
})

一行代码实现数组去重?

[...new Set([1,2,3,1,'a',1,'a'])]
//详细解释介绍
let aa = new Set([1, 2, 3, 1, "a", 1, "a"])
//获取的aa是伪数组,转为数组可以如下面两个方法
  console.log(aa);
  //方法1
  console.log([...aa]);
  //方法2
  Array.from(aa)
 //但是不同方法转的数组并不相等
 console.log([...aa] === Array.from(aa));//false

写一个function,清除字符串前后的空格。(兼容所有浏览器意思就是原生)

 String.prototype.trimmmm = function () {
        return this.replace(/^\s+/, "").replace(/\s+$/, "");
      };
      var aa = "  nihllf   ";
      console.log(aa);
      console.log(aa.trimmmm());
      console.log(aa.trim());
  nihllf   
nihllf
nihllf

写一个function,清除字符串前后的空格。(兼容所有浏览器)

定义
String.prototype.trim=function(){
	return this.replace(/^\s+/,"").replace(/\s+$/,"")
}
使用
console.log("  Nidshaid  ".trim());//Nidshaid

希望使用js获取到页面中所有的checkbox怎么做

var inputs = document.getElementsByTagName("input");
    console.log(inputs);
    checkboxArr = [];
    for (var i = 0; i < inputs.length; i++) {
      if (inputs[i].type == "checkbox") {
        checkboxArr.push(inputs[i]);
      }
    }
    console.log(checkboxArr);

怎么获取24小时进制的时分秒

var now =new Date();
var h=now.getHours();
var m=now getMinutes();
var s=now.getSeconds();
var date=[h<10?0:Math.floor(h/10),h%10,m<10?0:Math.floor(m/10),m%10,s<10?0:Math.floor(s/10),s%10,]
console.log(date)

执行题面试题

	var a =10 
	function  test(){
	    // 注释1
		a = 100;
		console.log(a); // 100
		console.log(this.a) // 10    函数无调用者  this === window
		var a; // 会变量提升到 注释1的位置,但let a;不行
		console.log(a);  // 100
	}
	
	
	(function (){
		var a=b=3;    // 拆开为  先执行b=3; var a=b
	})()
		console.log(b); // 3
		console.log(window.b); // 3
		console.log(a) // a is not defined
	for (var i=1;i<=3;i++){
		setTimeout(()=>{
			console.log(i)
		},0)
	}
		console.log(i,1)  // 4,1
// 输出4,4,4

	for (let i=1;i<=3;i++){
		setTimeout(()=>{
			console.log(i)
		},0)
	}
	console.log(i,1)  // i is not defined
	// 输出1,2,3,闭包知识