文章目录
JavaScript面试常问;
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、JavaScript数据类型
基础数据类型:Boolean、String、Number、Symbol、Undefined、Null
复杂(引用)类型:Object、Array、(Date、RegExp、Function、后面三个新增类型)
也可能会考察数据类型判断,typeof、instanceof;包括手动实现typeof和instanceof
二、var|let|const的相同点和区别;
在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过 var 关键字,函数声明是通过 function 关键字,而在ES6之后,声明的方式有 var 、 let 、 const;
1.var;
如果使用var来声明的变量;那这个变量就属于当前的函数作用域,如果声明的变量是发生在函数外的顶层变量,那么这个变量就属于全局作用域。
var a = 1; /*此处声明的变量a是在函数外声明的顶层变量*/
function fn(){
var a = 2;/*此处声明的变量a为函数fn里面的局部变量*/
console.log(a);a在这里是2
}
fn();
console.log(a);//1
如果在声明 var变量时, 省略var关键字且变量名相同的话,那么省略var的变量就会变成全局变量,赋值给有var且变量名字相同的变量:
var a = 1; /*此处声明的变量a是在函数外声明的顶层变量*/
function foo(){
a = 2;/*此处声明的变量a为函数fn里面的局部变量*/
console.log(a);a在这里是2
}
foo();
console.log(a);//2
也就是所说的变量提升(var声明的变量存在的变量提升)
2.let 声明的变量特点:
1.let 声明的变量具有块作用域的特征。
2.在同一个作用域,不能重复声明变量。
3.let 声明的变量不存在变量提升。
let a = 1;
console.log(a);//1
/*-------------------------------------------------*/
console.log(b);//会报错 说b 是不存在的 b is not defined
let b = 2;
3.const:
const 声明的为常量,除了和 let 的特点一样外,还有一个就是不可改变;即 const 定义的变量,一旦定义后,就不能修改。
const a = 1;
console.log(a);//1
a = 2;
console.log(a)/*Uncaught TypeError: Assignment to constant variable.*/
但是,也并不是说 const 声明的变量其内部内容不可变,列如:
const obj = {a:1,b:2};
console.log(obj.a);//1
obj.a = 3;
console.log(obj.a);//3
更准确的说,是 const 声明的变量是一个值的只读引用。这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配。
总结
1.let 和 const 声明的变量属于块级作用域,var 声明的变量属于局部作用域;
2.var 存在变量提升现象,而 let 和 const 没有变量提升;
3.在同一个块级作用域,var 变量可以重复声明,而let 变量不能重新声明,const 变量不能被修改。
promise
promise考察点比较多,包括实现自己的promise和一些调用的知识点
推荐两篇文章:实现Promise和Promise题
CSS
盒模型,盒模型的margin、padding有什么特点?
flex布局的属性都有什么,都代表什么含义?
左右居中布局、上下居中布局、上下左右居中布局,实现方式是什么?
单行超出省略…,
多行超出省略…
自适应布局
响应式布局
less、scss、stylus
rem、em、vw等
移动端1px如何实现?
css如何实现三角形?
css的link和import区别是什么?
解决盒子塌陷的方法/
html
meta用来干嘛的
块元素、行元素区别和举例
html5新增的标签有哪些?(最少10个)
video标签的使用,事件等