前端面试题

前端面试涉及知识点整理(持续更新)

  1. export 和 export default的区别:
    export:export在一个文件中可以有多处,然后在import的时候要加上’’{}’'来引入,且变量名和export出来的名字要一样。
    export default:export default在一个文件中只能有一个,且不需要加上大括号,但是通常情况我们是与export default暴露出来的文件的名字是一样的,我们可以将export default看成export 然后加上default,default相当于暴露的名字,所以引入的时候可以import {default as *} from …。

    此处小编就会想到哈 commonJs和 es6的import和require那些机制有什么区别?
    1. 首先就是CommonJs模块输出他输出的是一个值得复制,ES6模块输出的是值得引用
    2. CommonJs模块是运行时加载,ES6模块是编译时输出接口
    下面我们来分析一下第一点:如果说CommonJs输出的是值得复制,那么一旦输出一个值,模块内部得变化就不会影响到这个值,相反的是ES6模块输出的是引用,所以模块内部值得变化,会影响到其他值的变化。下面我们来看一下代码:

CommonJs:
var counter = 3
function addCounter() {
	counter++
}
module.exports = {
	counter: counter,
	addCounter: addCounter
}


//引入
var mod = require('./lib')
console.log(mod.counter)  //3
mod.addCounter()
console.log(mod.counter)  //3
ES6:
export let counter = 3
export function addCounter() {
	counter++
}

// 引入
import { counter, addCounter } from './lib'
console.log(counter)  //3
addCounter()
console.log(counter)  //4

观察上面代码,我们还可以发现就是module.exports暴露出去是一个对象,然后相当于在用的时候,相当于在用这个对象,这个对象在脚本运行结束时才会生成,而在ES6模块中则是按需加载,在代码解析阶段就会生成!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值