博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基础知识总结-前端面试(一)
阅读量:4948 次
发布时间:2019-06-11

本文共 4170 字,大约阅读时间需要 13 分钟。

打算写一个前端面试系列的知识,博客很久没有进行更新,更新的都是一些的基础知识。

最近在投简历进行面试,说是面试,其实就是一个自己的使用自己大白话的知识概括吧。欢迎感兴趣的小伙伴进行学习或者提出建议和改正!

大概计划章节如下

1-1 关于面试题

2-1 变量类型和计算-变量类型

2-2 变量类型和计算-强制类型转换

2-3 变量计算-理解json

2-4 原型和构造函数-构造函数

2-5 原型和构造函数-原型规则

2-6 原型和构造函数-原型链

3-1 作用域和闭包-变量提升

3-2 作用域和闭包-this

3-3 作用域和闭包-作用域

3-4 作用域和闭包-闭包

4-1 异步和单线程-异步

4-2 异步和单线程-单线程

5-1 日期常用API

5-2 数组常用API

5-3 undefined和null

 

1-1 关于面试题

关于面试,虽然我个人还在面试过程当中,但是我有抽空看一点点的题目。我觉得认为万变不离其宗,基础知识把握好,题目做起来就不会错得那么难看哈哈哈。

看到题目,1:看考点;2:知识点;3:扩展;

 

2-1 变量类型和计算-变量类型(按存储方式区分类型)

变量类型分为:值类型和引用类型

基本数据类型(值类型)分为:undefined,null,number,boolean,string.

引用类型分为:对象、数组、函数等

两者之间的区别在于:值类型每个变量的储存各自的值不会相互影响,不可以添加属性和方法。而引用类型刚好相反

 

值类型简单代码演示

var a = 100;var b = a;a = 200;console.log(b)//100

引用类型代码演示

var a = {age:20};//a赋值对象var b = a;//b的指针指向ab.age = 21;console.log(a.age)//21

使用typeof可以进行检测值类型和函数,但是引用类型的对象数组区分不出来,也可以用instanceof指定类型对象来检测

推荐文章:https://segmentfault.com/a/1190000008472264

 

 2-2 变量类型和计算-强制类型转换变量的计算会导致类型的强制转换

变量的计算大概有以下几种:

1、字符串的拼接:

以下代码输出的结果是什么

console.log(1+'2'+'2');//122console.log(1++'2'+'2');//1++'2'变成1+2,等于3拼接成为32console.log('A'-'B'+'2');//NAN加上拼接的字符2  结果为NAN2console.log('A'-'B'+2);//前面是NAN,后面是加法运算+2。运算操作中其中一个为NAN则整体为NAN

 

2、== 运算符

什么时候用==,什么时候用===

==值相等,===完全相等(包括类型);

if (obj.a==null){  //相当于obj.a==null||obj.a===undefined的简写形式  //这个是jquery源码推荐的写法    }

 

3、if语句

var b = 100;if(b){//此处的b强制转换成布尔类型}

 

4、逻辑运算符号

console.log(10&&0);//0;console.log("||'abc'");//||'abc';console.log(!window.abc);//true;var a = 100;console.log(!!a);//两个!!则是true

 

2-3 变量计算-理解json

json在js中是对象和数组,常用的json就是将json转换成字符串,字符串转换成对象。

json是一种数据交换的文本格式,目的是取代繁重的xml

json常用Api:

json.stringify({a:10,b:20}); //json转换成字符串json.parse('{"a":10,"b":20}') //字符串转换成json

推荐文章:http://blog.csdn.net/qq_32528231/article/details/52783210

 

2-4 原型和构造函数-构造函数

 什么是构造函数?

普通函数要创建一类对象时,就被称为构造函数,也叫构造器。new fn()的形式创建,new对象的过程也克隆了obj.prototype对象

function Foo(){//建议构造函数首字母大写  this.name = 20;  }var Foo2 = new Foo;console.log(Foo2.name);//20

 

函数的创建方式

fn();//不报错function fn(){  //函数声明式,定义在哪都能调用}fn1();//报错var fn1 = function(){  //函数表达式,继承的是变量,调用只能在定义后面}

 

2-5 原型和构造函数(constructor)-原型规则

1、所有引用类型,_proto_属性值指向它的构造函数的prototype属性值:

obj._proto_ === object.prototype;

Fn.prototype.constructor === Fn:

instanceof方法可以判断引用类型属于哪个构造函数的方法,判断变量是否是数组类型。

2、可扩展性

推荐文章:https://www.cnblogs.com/pompey/p/6675559.html

极力推荐,配合文章中的代码实战更为清晰

 

2-6 原型和构造函数-原型链

原型链:是一种行为委托机制。

配合__proto__指向的链路从下往上寻找,找不到就是unefined

一个原型链继承的例子。【注意修改id,此处演示id为div1】

function Elem(id){  this.elem =  document.getElementById(id)};Elem.prototype.html = function(val){  var elem = this.elem;  if (val){    elem.innerHTML = val;    return this;    }else {      return elem.innerHTML  }}var div1 = new Elem('div1');div1.html('

hello

');

 

new 一个对象的过程

创建、this指向、执行对this赋值、返回this

 

3-1 作用域和闭包-变量提升

一个变量,在局部作用域的级别优先于全局作用域

自由变量:即当前作用域没有定义的变量

var a = 250;function fn(){  var b = 100;  console.log(a);//自由变量  console.log(b);}fn();//250//100

换一种情况

var a = 250;function fn(){   console.log(a);//自由变量,变量在局部得到提升,还未赋值状态  var a = 100;//得到提升   console.log(a);}fn();//undefined//100

以上另一种情况的代码演示,就叫做提升自由变量

 

 

3-2 作用域和闭包-this

this在执行时才能确认值,定义时无法确认

扩展认识:

call、apply、bind绑定this指向。这其中最常用的是call

function fn1(name,age){  alert(name);  console.log(this);}fn1.call({x:100},'zhangsan',20);//弹出“zhangsan”//this指向{x: 100}

 

 

3-3 作用域和闭包-作用域

分为局部作用域和全局作用域。局部同名变量优先级高于同名全局变量。js没有块级作用域

作用域链:自由变量从下往上往父类进行查找是否存在这个属性。这个一整个的过程就是作用域链

 

3-4 作用域和闭包-闭包

内部函数能引用外部函数中的变量,和作用域链密不可分,存储私有属性,封装变量。

 

 

4-1 异步和单线程-异步

js是单线程,异步和单线程是相辅相成的。

单线程就意味着不能同时做两件事,而同步会阻塞代码的运行,所以只能排队。而异步就是个插队的。

什么时候会用到异步?

需要进行耗时较长的操作都会用到异步。比如网络请求ajax、动态<img>加载等

 

 

4-2 异步和单线程-单线程

单线程一次只能完成一件事,其余的任务都得排队按顺序完成,前一个完成了才能进行下一个

 

5-1 日期常用API

getTime();//毫秒数getFullYear();//年getMonth();//月 (0~11)要+1getDate();//日getHours();//小时getMinutes();//分钟getSeconds();//秒Date.now();//当前时间毫秒数new Date();//当前时间

 

5-2数组常用API

forEach:遍历every:判断所有元素是否都符合条件some:判断是否至少有一个元素符合条件map:重新组装数组元素filter:过滤符合条件的元素sort:排序(从小到大、从大到小)

 

 

5-3 undefined和null

var a = undefined;    var b = null;    a == b;//true    a === b;//true

以上代码显示出null和undefined的行为非常相似

但是根据用法来说

null表示“没有对象“的意思,就是此处不应该有值

undefined表示”缺少值“,就是此处应该有值,但是还没有定义

 

null常用情况

作为参数,表示这个参数不是对象

作为原型链的终点

 

undefined常用情况

变量声明了,没有赋值

调用函数时,没有提供该有的参数,该参数为undefined

对象没赋值属性,属性值为undefined

函数没返回值时,默认返回undefined

 

转载于:https://www.cnblogs.com/web1/p/7875882.html

你可能感兴趣的文章
转:Java学习路线图
查看>>
C++_01_入门
查看>>
重磅公布码农界的第一张吉他专辑小样
查看>>
禁用viewstate
查看>>
cocos2d-js-v3.0-rc0 下 pomelo-cocos2d-jsb native web 配置
查看>>
怎样在 Swift 项目中使用 CocoaPods
查看>>
poj 1258 Agri-Net
查看>>
2018-07-11CROSS JOIN+INNER JOIN+LEFT JOIN+RIGHT JOIN
查看>>
java回收算法
查看>>
【原】Github系列之二:开源 一行代码实现多形式多动画的推送小红点WZLBadge(iOS)...
查看>>
WCF技术研究团队QA专题
查看>>
qt弹出对话框选择图片并显示
查看>>
详解基于MFC计算器实现过程
查看>>
浅谈IOC--说清楚IOC是什么
查看>>
DataGridview焦点不移开不保存数据问题
查看>>
C语言字节对齐
查看>>
在iOS开发中使用FMDB
查看>>
NSURL 处理的基本函数
查看>>
IOS开发之Cocoa编程—— NSUndoManager
查看>>
17.蛇形矩阵(模拟)
查看>>