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)
}
}

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

最新文章

  1. input输入内容时放大问题
  2. 打磨程序员的专属利器——命令行&amp;界面
  3. java的nio之:java的bio流下实现的socket服务器同步阻塞模型和socket的伪异步的socket服务器的通信模型
  4. MNC - Multicast NetCat
  5. 【JavsScript】当 JavaScript 从入门到提高前需要注意的细节:变量部分
  6. hdu 4619 最大匹配问题
  7. Qt: 内建对话框(各种对话框都有了,且用到了qobject_cast解析sender的技术)
  8. 关于Handler与异步消息处理循环的摘抄
  9. 关于onclick中的event对象和element对象
  10. 初识JavaScript,感觉整个人都不好了。。。
  11. 二、oracle sql*plus常用命令
  12. (简单) POJ 2492 A Bug&#39;s Life,二分染色。
  13. ed命令
  14. 在U-boot中添加以太网驱动
  15. HTML5支持服务器发送事件(Server-Sent Events)-单向消息传递数据推送(C#示例)
  16. 数据库及ORM
  17. Spring.NET依赖注入框架学习--入门
  18. VMware vSphere client 中英文语言界面设置
  19. HBASE小结--待续使用
  20. [LeetCode]最长回文子串 java

热门文章

  1. laravel 5以后数据库插入自动转化方式
  2. CentOS 安装 Mongodb详解 --- 有Linux基础
  3. #ifdef _WIN32的来源
  4. Mysql-将一张表中的数据批量导入另一张表中
  5. centOS 开启端口
  6. python 类中__call__内置函数的使用
  7. 30 道linux运维题
  8. etcd三节点安全集群搭建-pki安全认证
  9. Ajax上传文件到C#Action中
  10. 小程序入门 MQTT物联网协议 publish 和订阅subscribe onenet 阿里云 百度云 基于GPRS模块(SIM800C/SIM900A/SIM868等)和STM32主控芯片