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.假设某个数组的元素全是数字,请编写代码找出该数组中的重复元素。
方法1:
function 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());
方法2:
function 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,闭包知识