您的位置:首页 > Web前端 > JavaScript

js的一些总结

2016-02-02 23:44 633 查看
关于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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: