1、判断数据类型有几种方法

console.log(typeof 'abc')
// string
console.log(Object.prototype.toString.call('abc'))
// [object String]
console.log('abc'.constructor == String)
// true

2、数据类型有哪些?

基本类型:String、Number、boolean、undefined、null

复杂类型:function、object、NaN、Array、regexp

3、字符串反转

var str = 'abcdef'.split('').reverse().join('')

4、什么是事件委托;

事件委托是利用冒泡,子标签的触发事件让父标签代替执行;

  //  html
<ul>
<li>1</li>
<li>2</li>
<li>3<li>
</ul>
// script
var ul = document.querySelector('ul');
ul.onclick = function(e){
e.target.style.color = 'red'
}

5、什么是闭包,有什么作用

闭包就是能够记住当初所处作用域时候的变量,不管函数在哪里执行,都能够记住当初所处作用域时候的变量,并且会遮蔽新作用域的变量;

1、可用作迭代器

2、可预测状态容器

function fun (){
let a = 10;
return function(){
return a ++;
}
}
var inner = fun()
console.log(inner())//
console.log(inner())//

6、this的指向问题

JavaScript中this的8大指向详解!

7、请写出一个函数,清楚前后空格,所有浏览器都兼容

function trim(str) {
if (str & typeof str === "string") {
return str.replace(/(^s*)|(s*)$/g,""); //去除前后空白符
}
}

8、获取url中的地址

console.log(window.location.href)

9、如何实现一个深克隆

const deepclone = (o) => {
if(Array.isArray(o)){
var arr = [];
o.forEach(item => {
arr.push(deepclone(item));
});
return arr;
}else if(typeof o === "object"){
var oo = {};
for(var k in obj){
oo[k] = deepclone(obj[k]);
}
return oo;
}
return o;
}

10、0.1+0.3等于多少

console.log(0.1+0.2)
// 0.30000000000000004

11、什么是优雅降级和渐进渐强?

其实这是浏览器的两种方案

优雅降级:能力检测,如果能力有用新的;如果能力没有,用旧的。

比如:

if(浏览器是高级浏览器){
使用<video>
}else{
使用flash
}

渐进渐强:

低端浏览器仅实现基本功能,高级浏览器实现额外功能。

比如上传文件,低端浏览器就给它提供上传按钮,高端浏览器增

12、substring 和 substr 和 slice 的区别是什么?

substring(首位下标, 末位下标前1位)

slice(首位下标, 末位下标前1位)

substr(首位下标, 子串长度)

slice能够用负数,但是不能颠倒参数位置

substring不能用负数,但是会自动小数在前

13、如何实现小于 10px 的文字?

transform:scale(0.5);

14、输出今天的日期以 YYYY-MM-DD 形式显示?

const date = new Date();
const y = date.getFullYear();
const m = date.getMonth() + 1;
const d = date.getDate(); function buling(n){
return n.toString().length == 1 ? '0' + n : n;
} console.log(y + '-' + buling(m) + '-' + buling(d))

15、添加、移除、移动、复制、创建和查找节点

增加节点

createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点

移除、替换、插入

removeChild() //移除
replaceChild() //替换
insertBefore() //插入

查找

getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性

16、call和apply的区别

Object.call(this,obj1,obj2,obj3)
Object.apply(this,argument

17、实现一个对象更改后不会影响原来的对象

let obj = {a:1,b:2}
let newobj = JSON.parse(JSON.stringify(obj))
newobj.b = 5
console.log(obj)
console.log(newobj)

18、问:有一筐鸡蛋,1个1个能取完, 2个2个剩1个,3个3个剩1个,4个4个剩1个,5个5个剩1个,6个6个剩1个,7个7个可以取完;

for(let i = 0 ; i < 1000 ; i++){
if( i % 1 == 0 &&
i % 2 == 1 &&
i % 3 == 1 &&
i % 4 == 1 &&
i % 5 == 1 &&
i % 6 == 1 &&
i % 7 == 0){
console.log(i)
}
}

如果大家喜欢的话,欢迎关注“前端伪大叔”我将为您不间断的分享前端学习知识!

JS常见面试题总结-真实被问到的!的更多相关文章

  1. vue.js常见面试题及常见命令介绍

    Vue.js介绍 Vue.js是JavaScript MVVM(Model-View-ViewModel)库,十分简洁,Vue核心只关注视图层,相对AngularJS提供更加简洁.易于理解的API.V ...

  2. 前端JS常见面试题(代码自撸)

    题目一示例: 适用于子数组等长度及不等长度. let arr = [ [1,2,3], [5,6,7,8], [9,10,11,12,13] ] function arrayDiagonal(arr) ...

  3. js常见面试题

    1.大小写转化,将字符串转化成驼峰的方法 例:border-bottom-color转化为:borderBottomColor var str="border-bottom-color&qu ...

  4. JS常见面试题,看看你都会多少?

    1. 如何在ES5环境下实现let 这个问题实质上是在回答let和var有什么区别,对于这个问题,我们可以直接查看babel转换前后的结果,看一下在循环中通过let定义的变量是如何解决变量提升的问题 ...

  5. 【javascript常见面试题】常见前端面试题及答案

    转自:http://www.cnblogs.com/syfwhu/p/4434132.html 前言 本文是在GitHub上看到一个大牛总结的前端常见面试题,很多问题问的都很好,很经典.很有代表性.上 ...

  6. 【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.欢迎 Sta ...

  7. 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...

  8. 夯实Java基础系列16:一文读懂Java IO流和常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  9. Web开发的常见面试题HTML和HTML5等

    作为一名前端开发人员,HTML,HTML5以及网站优化都是必须掌握的技术,下面列举一下HTML, HTML5, 网站优化等常见的面试题: HTML常见面试题: 1. 什么是Semantic HTML( ...

随机推荐

  1. 互操作性 a C++ library which enables seamless interoperability between C++ and the Python programming language

    https://zh.wikipedia.org/wiki/互操作性 就软件而言,互操作性——这条术语用来描述的是不同的程序(programs)借助于同一套交换格式(exchange formats) ...

  2. cad二次开发中DBText对象的外框GeometricExtents有问题?

    CAD2007版本 acDoc.Editor.WriteMessage( string.Format("[{0:F1},{1:F1},{2:F1}] - [{3:F1},{4:F1},{5: ...

  3. ADS1.2与MDK4.7冲突问题的解决方法

    需要添加2个系统变量. 1.添加环境变量名: ARMCC5LIB 变量值:C:\Keil\ARM\ARMCC\lib(实际Keil安装目录) 2.添加环境变量:ARMCC5INC变量值:C:\Keil ...

  4. LC 890. Find and Replace Pattern

    You have a list of words and a pattern, and you want to know which words in words matches the patter ...

  5. 机器学习之K-Mean聚类算法

    知识点: # coding = utf-8 import numpy as np import pandas as pd from sklearn.cluster import KMeans &quo ...

  6. C++ 中set

    set特点: 所有元素不会重复,重复插入已经有的新值无效: 所有元素按顺序排列:unordered_set除外 键和值相同,所以set中的值是不可更改的 set的各成员函数列表如下: 1.begin( ...

  7. k8s开启cadvisor http 服务

    k8s开启cadvisor http 服务 cadvisor介绍: Google的 cAdvisor 是另一个知名的开源容器监控工具. 只需在宿主机上部署cAdvisor容器,用户就可通过Web界面或 ...

  8. 大觅网02Day

    docker环境搭建:(注:请先完成上一次的环境搭建) A.部署环境(导入上次系统的时候修改虚拟机的内存) 1.安装系统自带版本Docker:apt-get install docker.io 2.查 ...

  9. WINDOWS mysql 5.7.15 安装配置方法图文教程

    因本人需要需要安装Mysql,现将安装过程记录如下,在自己记录的同时,希望对有疑问的人有所帮助. 一.下载软件 1. 进入mysql官网,登陆自己的oracle账号(没有账号的自己注册一个),下载My ...

  10. Leetcode之广度优先搜索(BFS)专题-994. 腐烂的橘子(Rotting Oranges)

    Leetcode之广度优先搜索(BFS)专题-994. 腐烂的橘子(Rotting Oranges) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ar ...