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>
首先来看一个场景:
<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>
相关文章推荐
- 命令行下JSON处理工具:jq
- Gulp.js深入讲解
- js引擎garbage collection的问题
- JavaScript模块化与esl.js
- Dom及JavaScript图片库
- 个人笔记 js 15 js字符串的转换
- 个人笔记 js 14 js实现点击单元格行跳转链接到指定页面
- extjs查找表单中的文本框值
- 个人笔记 js 13 点击事件触发弹窗询问选项
- [转]FastJSON通过SerializeFilter定制序列化
- #学习笔记#(30)牛客网JS测试题21~45
- js调试工具Console命令详解
- 如何实现JSP网页模板 JSP网页母版
- javascript异步过程
- BZOJ 1013: [JSOI2008]球形空间产生器sphere
- JSTL不同版本和EL表达式的关联
- 如何在JavaScript里取session的值
- 什么是javaScript闭包
- JavaScript基础笔记集合
- 立即执行函数表达式 项目经常用到js 代码Module模式