javascript 基础知识

1.javascript的数据类型

基本数据类型:number、string、boolean、null、underfined、bigint、symbol

引用数据类型:object、array、date、function、regExp

2.判断变量的类型

typeof

instanceof及原理

Object.toString().call()及原理

3.数据类型转换

相等==和全等===(==判断值是否相等 ===判断值得类型是否相等)

强制转换和隐式转换

包装类型

4.原型和原型链

①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象

②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象

③所有引用类型的__proto__属性指向它构造函数的prototype

var a = [1,2,3];

a.__proto__ === Array.prototype; // true

当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。



5.闭包及优缺点

闭包就是获取其他函数内部变量的函数,是链接内部函数与外部函数的桥梁


6.call/apply/bind

用于改变this的指向

bind返回一个新函数 必须重新调用

call和bind传参用逗号隔开

apply传参为数组形式

7.dom事件流和事件委托

捕获、冒泡

事件委托及好处

8.cookie和storage

cookie的构成:

name:cookie 的名称

value:cookie 对应的值,动态生成的

domain:服务器域名

expiry:Cookie 有效终止日期

path:Path 属性定义了 Web 服务器上哪些路径下的页面可获取服务器设置的 Cookie

httpOnly:防脚本攻击

secure:在 Cookie 中标记该变量,表明只有当浏览器和 Web Server 之间的通信协议为加密 认证协议时, 浏览器才向服务器提交相应的 Cookie。当前这种协议只有一种,即为 HTTPS。

localStorage和sessionStorage

9.数组和对象的常见方法

Array:slice、splice、concat、filter、map、reduce

splice(start deletecount end)改变原数组

slice(start end)不改变原数组 end不包括

filter 过滤 (item data )

Object:keys、assign

举例:改变原数组的方法

10.new内部做了什么

 (1)创建一个新对象;

   (2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;

   (3) 执行构造函数中的代码(为这个新对象添加属性) ;

   (4) 返回新对象。

11.防抖节流

输入一次执行一次

防抖:用户多次触发事件,在用户一直触发事件中,事件不会执行,只有在用户停止触发事件一段时间之后再执行这个事件一次。

节流:用户多次触发事件,在用户一直触发事件过程中事件会每间隔一段时间执行一次,会执行多次。

应用场景:监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断

search搜索联想,用户在不断输入值时,用防抖来节约请求资源。

12.this指向

对于定时器函数,this指向windows 。

对于构造函数,this指向实例对象。

对于普通函数,this指向windows。

对于对象函数来说,this指向该方法所属的对象。

13.什么是函数

函数是由function定义,可以重复执行的代码块

14.作用域链

函数内部有变量就打印函数内部的,函数内部没有就打印函数外部,从内到外逐级查找

15.let/const/var区别

var存在变量提升、定义全局变量、值允许修改、可以声明多次

let值允许修改、只能声明一次

const、let不存在变量提升、定义在代码块中

const 定义常量、定义的值不允许修改

16.es6异步编程:promise和async、await

promise解决回调地狱,让请求接口按照顺序执行

async、await比promise更好地解决毁回调地狱

17.箭头函数

箭头函数是es6新增的,可以替换到 function 和return

如果只有一条语句,则省略大括号和return

18.javascript运行机制

同步,同步程序执行完成之后执行异步程序

异步,setTimeOut,setInterval

process.nextTick()在同步之后,异步之前执行

setImmediate()在异步之后执行,如果第一次没进入任务队列的事件则会放到setImmediate之后执行

同步放在运行栈中

异步放在任务队列中

异步分为宏任务和微任务

newpromise里的是同步

宏任务:计时器、ajax、读取文件

微任务:promise.then

执行顺序:

1.同步

2.process.nextTick(在同步之后,异步之前执行)

3.微任务(promise.then)

4.宏任务(计时器、ajax、读取文件)

5.setImmediate

19.实现继承的几种方式

es5 的 property继承

es6 的 super();

20.垃圾回收

找出不再使用的变量,然后释放其占用的内存

局部变量在函数执行结束之后,就没有存在的必要了,可以释放其内存

哪些变量有用,哪些变量没用

1.标记清除(标记出需要回收的对象,回收所标记的对象所占用的空间)

2.引用计数(对象引用一次就+1,释放一次就-1,为0的时候就表示可以清除了)

3.什么时候触发垃圾回收机制

21.深拷贝和浅拷贝

浅拷贝就是指对象复制的时候只复制一层;深拷贝是指复制对象的所有层级。

1.使用递归的方式实现深拷贝

2.使用json对象实现深拷贝

var obj1 = {

  name: 'li',

  hobit: ['摄影', '羽毛球']

}

var obj2 = JSON.parse(JSON.stringify(obj1));

obj2.hobit.push('游泳');

console.log(obj1); //{ name: 'li', hobit: [ '摄影', '羽毛球' ] }

console.log(obj2); //{ name: 'li', hobit: [ '摄影', '羽毛球', '游泳' ] }

3.通过jquery的extend实现深拷贝

$.extend( [deep ], target, object1 [, objectN ] )

deep :表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝

target: Object类型 目标对象,其他对象的成员属性将被附加到该对象上

object1… objectN : Object类型 第一个以及第N个被合并的对象。

4.通过object.assign实现浅拷贝

var obj1 = {a: 1, b: 2};

var obj2 = Object.assign({}, obj1);

5.通过解构赋值实现浅拷贝

var obj1 = {a: 1, b: 2};

var obj2 = {...obj1};

22.什么是跨域

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。

23.组件data为什么是一个函数

当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响

24.js判断变量是不是数组

var str = [1,2,3]

console.log(Array.isArray(str))

console.log(Array.prototype.isPrototypeOf(str))

25.堆栈

栈 存储基本数据类型 由操作系统自动分配 用完立即释放

堆 存放引用类型 存放了引用地址 由程序员自动分配和释放 没有手动释放则由垃圾回收算法自动释放

26.foreach和map的区别

forEach()会修改原来的数组。而map()方法会得到一个新的数组并返回。map执行速度快一些

27.object.keys

let person = {name:"张三",age:25,address:"深圳",getName:function(){}}

Object.keys(person).map((key)=>{

  person[key] // 获取到属性对应的值,做一些处理

}) 

28.请求

get:申请获取资源

post:客户端向服务器发送请求

put:上传某个资源

delete:删除某个资源

29.双等==和全等===的区别

==判断的是值相等

===判断值得类型是否相同

30.js有哪些内置对象

js中的内置对象包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。

31.js拖拽功能的实现

拖拽包括mousedown、mousemove、mouseup(鼠标按下、鼠标按下保持不变移动、鼠标抬起),在mousedown时设置一个按下的状态,在鼠标抬起的时候清除这个状态、当鼠标按下的时候先判断是否为拖拽元素,如果是则设置状态并保存鼠标按下的坐标、在mousemove事件中判断现在位置和以前位置的相对移动,确定拖拽元素在移动中的坐标、然后在mouseup事件中清除状态和结束拖拽事件

32.要求写出 区号+8位数字,或者区号+特殊号码: 10010/110,中间用短横线隔开的正则验证。 区号就是三位数字开头。   例如010-12345678

 let reg ='/^\d{3}-(\d{8}|10010|110)/g'

 console.log(reg)

33.不使用循环API 来删除数组中指定位置的元素(如:删除第三位) 写越多越好

let arr = [1,2,3,4,5]

let arrs = [1,2,3,4,5]

delete arrs[2]

console.log(arr.splice(2,1))

console.log(arrs)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容