加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

浅谈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

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读