出处我的公众号哦,喜欢请关注:
我们一起学习:JavaScript 变量
1、变量对大小写敏感
2、合理规范的命名
- 有意义
- 驼峰命名 userInfo
- 匈牙利命名 eg:user_info
3、变量在 window 上
var num=996;
console.log(num) // 996;
console.log(window.num) // 996
4、不适用var声明的变量
和使用var的没有区别,会直接被作为是window
的属性,成为全局
变量。
5、连续赋值
var a = b = 1;
// 上面的意思是:
// var a=1;
// b =1;
// 所以如果在函数中使用上面句式 b 是全局变量。
6、重复声明变量
// 没有赋值
var num = 1;
var num;
console.log(num); // 输出:1
// 赋值
var num = 1;
var num = 3;
console.log(num); // 输出:3
7、常量
1)约定俗成——大写
2)设置属性只读。
var CONFIG={};
Object.defineProperty(CONFIG,'DB_ACCOUNT',{
value: 'root',
writable:false
})
console.log(CONFIG.DB_ACCOUNT) // root
CONFIG.DB_ACCOUNT='guest'
console.log(CONFIG.DB_ACCOUNT) // root
3)如果是window全局常量
Object.defineProperty(window,'DB_ACCOUNT',{
value: 'root',
writable:false
})
console.log(DB_ACCOUNT) // root
DB_ACCOUNT='guest'
console.log(DB_ACCOUNT) // root
4)第三点的可用性较差,可写成函数
// 函数
var fun=function(name, value){
Object.defineProperty(window,name,{
value:value,
writable:false
});
return value;
}
console.log(fun("DB_ACCOUNT1",'root1')) // root1
console.log(fun("DB_ACCOUNT2",'root2')) // root2
window.DB_ACCOUNT1='root3';
console.log(window.DB_ACCOUNT1) // root1
5)Object.seal 方法封闭一个对象,使对象不能被扩充
可以修改队长属性,到时不能删除或者增加其他属性。
6)Object.freeze 方法可以冻结一个对象。一个被冻结的对象再也不能被修改。不能增加删除属性,也不能修改属性的值。
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// expected output: 42