用es5如何实现let和const
实现let:
(function(){
var a = 1;
console.log(a)
})();
console.log(a)
实现const:
var __const = function __const(data, value) {
window.data = value // 把要定义的data挂载到window下,并赋值value
Object.defineProperty(window, data, { // 利用Object.defineProperty的能力劫持当前对象,并修改其属性描述符
enumerable: false,
configurable: false,
get: function () {
return value
},
set: function (data) {
if (data !== value) { // 当要对当前属性进行赋值时,则抛出错误!
throw new TypeError('Assignment to constant variable.')
} else {
return value
}
}
})
}
原创文章,作者:czhdawn,如若转载,请注明出处:https://www.czhdawn.cn/archives/4950