浅谈js声明私有变量的两种方法及用途
发布时间:2022-04-20 08:52:04 所属栏目:语言 来源:互联网
导读:私有变量的概念是,在任何函数中定义的变量,都是私有变量,因为不能在函数外部访问这些变量。与其他Java,C++语言等不同,在JavaScript中是没有私有属性的不能用关键字来声明的私有变量。在JavaScript是没有私有属性的概念的,所有属性都是公用的。但是Java
私有变量的概念是,在任何函数中定义的变量,都是私有变量,因为不能在函数外部访问这些变量。与其他Java,C++语言等不同,在JavaScript中是没有私有属性的不能用关键字来声明的私有变量。在JavaScript是没有私有属性的概念的,所有属性都是公用的。但是JavaScript有其他方式呢个声明私有变量,一是使用闭包,二是使用weakmap。 闭包 闭包的描述有很多种,比如:能访问其它函数作用域的函数;内部函数访问外部函数作用域的桥梁;...... 使用闭包构建私有变量的逻辑在于: 1.在外部函数中声明变量和内部函数; 2.使用内部函数访问或者修改变量值; 3.在外部函数内返回内部函数; function outside(){ let val = 123; function inside(){ return val; } return inside; } console.log(outside()());//123 通过我上面的例子能够大致了解使用闭包构建私有变量的逻辑,但是不足以体现私有变量的重要性,一个const变量也能达到上述代码的效果: ![]() //同样的能访问,但是不能修改,达到了上述代码的效果 const val = 123; console.log(val);//123 接下来的代码,将具体体现私有变量的重要性: function person(){ let _name = 'unknown'; let _age = 18; let _sex = 'man'; function setName(name){ _name = name || 'unknown'; } function getName(){ return _name; } function setAge(age){ if(typeof age === 'number'){ _age = Math.floor(age); }else{ throw Error("typeof age !== 'number'"); } } function getAge(){ return _age; let xiaoming = person(); let xiaohong = person(); xiaoming.setName('xiaoming'); xiaohong.setName('xiaohong'); console.log('xiaoming name : ' + xiaoming.getName());//xiaoming name : xiaoming console.log('xiaohong name : ' + xiaohong.getName());//xiaohong name : xiaohong (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |