新普京网站-澳门新普京 > 新普京网站 > 利用try-catch判断变量是已声明未声明还是未赋值_javascript技巧_脚本之家

利用try-catch判断变量是已声明未声明还是未赋值_javascript技巧_脚本之家

2019/12/30 04:02

目标是若是多个变量是已证明未赋值,就足以直接赋值;况且无法更改变量的成效域 假如未注脚的话,就再也注明, 在英特网搜了下,不认为奇的法门是if=='undefined'卡塔尔国{var a='ss';}, 可是这种情势对未声明或已注解未赋值的变量都会回去true。何况风姿浪漫旦是那般: 复制代码 代码如下: var a; function f=='undefined'卡塔尔 {var a=1;} } f; 会展现undefined,因为f(卡塔尔国里面只是宣称了二个同名的有个别变量。 但是风流浪漫旦是已扬言未赋值的变量:if,会回到true; 未注脚的变量:if,会报错。 所以能够这么: 复制代码 代码如下: function f=='undefined'卡塔尔(قطر‎{ try{ if//表达v是已评释未赋值 v=1; //假若v是全局变量,那样不会更动它的法力域 } catch{//表达v是未证明 var v;v=2; } } console.log; 那样也是畸形的,因为js有‘申明提前'的特点,即函数内注解的变量在这里个函数里和这几个函数的子函数里都是可以知道的,不管它有声有色是在函数内的哪些岗位评释的。 所以由于地点里的var v;招致不管哪类情景都是只走try。 修改一下: 复制代码 代码如下: function f=='undefined'State of Qatar{ try{ if//表明v是已扬言未赋值 v=1; //若是v是全局变量,那样不会退换它的功力域 } catch{//表明v是未注脚eval;v=2; //这里不相像 } } console.log; 这样就足以了。 写成一个判断函数,再次回到'noDeclare'表示变量未表明,'noValue'代表变量已申明未赋值,'hasValue'代表变量已扬言已赋值: 复制代码 代码如下: function f=='undefined'卡塔尔{ try{ if return 'noValue'; } catch{ return 'noDeclare'; } } else return 'hasValue'; } var a; console.log; a=0; console.log; console.log; 又错了......console.log;时会报错......

上一篇:IO案例分享_javascript技巧_脚本之家 下一篇:js完成通用的Wechat分享组件示例,js完成通用的Wechat分享组件示例_底子知识_脚本之家