先看commonjs规范中的代码:
a102.js中代码:
function fun(){
console.log('fun');
}
// export {fun}
setTimeout(fun,1000)
exports.fun=fun;
a101.js中代码:
let fun=require('./a102').fun;
fun=function(){
console.log('被改了');
};
fun();
输出如下:
被改了
fun
尝试用es6的语法重写,:
a102.js
function fun(){
console.log('fun');
}
export {fun}
a101.js如下:
import {fun} from './a102.js';
fun=function(){
console.log('被改了');
};
报错如下:
Uncaught TypeError: Assignment to constant variable.
at 101.js:2
意思是fun被import之后变成了常量,这样确实更加安全了。