js的一些总结

关于js的一点总结:
首先来看一个场景:
<script>
alert(key) //发现会报错
</script>
因为还没有去声明这个变量,就去使用了,结果就会报错
如何想让它不报错可以使用下面的方法:
if("undefined" == typeof key)alert("发生错误");  //此处会弹出 发生错误
在JavaScript中typeof和instanceof常用来判断一个变量是否为空,或者是什么类型。
顺便学习总结一下typeof、和instanceof的用法:

typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
它返回值是一个字符串,该字符串说明运算数的类型。,typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined。
可以使用typeof来获取一个变量是否存在,如if(typeof a!="undefined"){alert("ok")},
而不要去使用if(a)因为如果a不存在(未声明)则会出错.
对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性.
instanceof 用于判断一个变量是否某个对象的实例:
var a=new Array();
alert(a instanceof Array)  //true
alert(a instanceof Object)  //true;
这是因为Array是object的子类。
function test(){};
var a=new test();
alert(a instanceof test) //true
<script>
var key;
alert(key) //这里输出  undefined
</script>
在计算机程序中,经常会声明无值的变量,未使用值来声明的变量,其值实际上是 undefined。
同时如何重新申明js变量,该变量的值不会丢失。
eg:
<script>
    var name="zhangsan";
    var name;
    alert(name);//此处依然会输出 zhangsan
</script>
但是对于这个就有些疑惑了:
<script>
   alert(key);  //undefined
   var key=zhangsan;
   alert(key);  //zhangsan
 </script>
按照我的理解第一个alert的结果应该是要报错的,但它却输出了undefined?通过查越资料得知:
javascript在执行前会进行类似“预编译”的操作,首先会创建一个当前执行环境下的活动对象,并将那些用var声明的变量设置为活动对象的属性,并赋值为undefined;
执行阶段,javascript是按照代码的先后顺序进行执行的,当遇到变量需要解析时,会首先从当前执行环境的活动对象中查找,如果没有找到而且该执行环境的拥有者有prototype属性时,则会从 prototype链中查找,否则将会按照作用域链查找。遇到var key = zhangsan;这样的类赋值语句时会给相应的变量进行赋值(注意:变量的赋值是在执行阶段完成的,如果在这之前使用变量,它的值会是undefined)
另一个场景:
<script>
    window.key=23;
    alert(window.key)//此处的结果是23
</script>

<script>
    window.key;
    alert(window.key)//此处的结果是undefined ,运行时会在window中查找key,会发现未定义
</script>
同时我们也可以通过下面的方法判断,alert(window.key)与定义的window.key没关系(解释的不太清楚)?

<script>
window.key
alert('key' in window)  //false
window.aa=23
alert("aa" in window) //true
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值