博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年6月11日

摘要: 我们先来看下面的两个例子var n=1;function f(){ var n=2; var e=function(){ return n; }; return e;}alert(f()());//2var n=1;function f(){ var n=2; var e=new Function("return n;"); return e;}alert(f()());//1原因如下:JS解释器在解析代码时,并不是一行行地分析执行函数,而是一段一段地分析执行函数,在同一段代码中,使用function语句和函数直接量定义的函数结构总会被提... 阅读全文

posted @ 2013-06-11 17:10 Amy-lover 阅读(390) 评论(0) 推荐(0) 编辑

摘要: 对变量的类型检测除了我们前面提到的typeof以外,还有instanceof操作符和constructor属性两种方法一、instanceof操作符虽然在检测基本数据类型时,typeof是非常得力的助手,但是在检测引用类型的值时,该操作符的用处不大,我们需要知道的不仅仅是它是一个对象,还想要知道它是一个什么类型的对象var r=new RegExp();var a=[];alert(r instanceof RegExp);//truealert(a instanceof Array);//truealert(2 instanceof Number);//falsealert(null ins 阅读全文

posted @ 2013-06-11 15:28 Amy-lover 阅读(256) 评论(0) 推荐(0) 编辑

摘要: JS解释器对使用function语句声明的函数,会在预编译阶段处理,对匿名函数在预编译阶段视而不见,在执行期才按表达式逐行进行解释执行,由于函数声明和函数表达式解析的视觉不同,因此导致函数拥有不同的特性一、function f(){ alert(1);}f();//2function f(){ alert(2);}f();//2,第二个f函数会覆盖第一个f函数JS解释器在预编译阶段就会把所有使用function语句声明的函数进行处理,如果发现同名函数,则用后者覆盖前者,在执行期,调用f函数时,只剩下了最后的那个同名函数二、var f=function(){ alert(1);... 阅读全文

posted @ 2013-06-11 15:03 Amy-lover 阅读(947) 评论(0) 推荐(0) 编辑

摘要: typeof是操作符,不是函数,可以用它来检测给定变量的数据类型,共有6个取值:"undefined"/"number"/"string"/"object"/"function"/"boolean"下面是几种较为特殊的值alert(typeof NaN);//numberalert(typeof Number.MAX_VALUE);//numberalert(typeof Number.POSITIVE_INFINITY);//numbervar a=function(){} 阅读全文

posted @ 2013-06-11 11:19 Amy-lover 阅读(284) 评论(0) 推荐(0) 编辑

摘要: 假设一个站点结构如下其中main.js文件和main.css文件均引用了1.jpg,例如#box{background:url("1.jpg");}window.onload=function(){document.getElementById().style.backgroundImage="url(images/1.jpg)";}可见JS文件所引用的背景图像路径以网页文件(index.html)为参考来设置,而不需要考虑js文件的具体位置,如果网页位置不变,则即使移动了js文件的位置,只需要更改网页文件中关于js文件的导入即可,不需要更改js文件中关 阅读全文

posted @ 2013-06-11 11:05 Amy-lover 阅读(361) 评论(0) 推荐(1) 编辑

摘要: JS的运行环境一般由宿主环境和执行期环境共同构成,宿主环境是由外壳程序(如web浏览器就是一个外壳程序)生成,执行期环境是由嵌入到外壳程序中的JS引擎(/JS解释器)生成的,在执行期环境JS可以生成内置静态对象、初始化执行环境等。宿主环境一般由外壳程序创建和维护,在一个宿主环境中可以运行多种脚本语言(如VBScript),以虚拟机的方式提供一个跨语言跨平台的宿主环境宿主环境一般会创建一套公共对象系统,该系统对所有脚本都开放,允许它们自由访问,还提供了公共接口,用来装载不同的脚本语言引擎脚本语言本身并不提供IO,也没有与系统和外界通信的能力,更不存在管理内存,修改注册表等行为,这些行为全部由宿主 阅读全文

posted @ 2013-06-11 10:18 Amy-lover 阅读(3765) 评论(0) 推荐(0) 编辑

摘要: JS时一种解释型语言,要想运行JS脚本,必须在浏览器中嵌入JS引擎,浏览器之间的不兼容归结于它们包含的渲染引擎不同。渲染引擎的职责是解释Web页面的所有代码,包括html标签,JS脚本,CSS样式等,JS引擎作为一个子集被包含在渲染引擎中1,Mozilla是Netscape公司创建,渲染引擎为Gecko2,IE的渲染引擎是Trident(/MSHTML),遨游,腾讯TT等均选用该引擎3,Safari的渲染引擎是KHTML4,Opera的渲染引擎是Presto5,Chrome的渲染引擎是Webkit,是KHTML的衍生品主流JS引擎JS引擎主流浏览器JScriptIESpiderMonkeyFi 阅读全文

posted @ 2013-06-11 09:26 Amy-lover 阅读(434) 评论(0) 推荐(0) 编辑

2013年5月23日

摘要: 1 引用类型是一种数据结构,用来将数据和功能组织在一起2 对象是某个特定的引用类型的实例,实例的创建是使用new操作符,后面跟上构造函数3 构造函数与函数的区别,构造函数和函数在定义上没有什么区别,唯一的区别就是调用的方式不同,任何函数,只要是通过new操作符调用的,那么它都可以作为构造函数,任何函数,如果不是通过new操作符调用的,那它就是普通的函数,为了区分函数和构造函数,我们一般将构造函数的首字母大写4 原生引用类型有5种:Object类型、Array类型、Date类型、RegExp类型、Function类型5 基本包装类型:与引用类型唯一的区别就是对象生存期,使用new操作符创建的引用 阅读全文

posted @ 2013-05-23 21:52 Amy-lover 阅读(715) 评论(0) 推荐(1) 编辑

2013年5月22日

摘要: 由于Javascript是松散型的,所以其变量只是在特定时间用于保存特定值的一个名字而已,并不存在某个变量必须保存某种类型的值的规则,变量的值以及其数据类型都可以在脚本的声明周期内改变一、基本类型与引用类型 1.1 基本类型:保存在栈内存中的简单数据段,值保存在内存中的一个位置 1.2 引用类型:保存在堆内存中的对象,变量保存的仅仅是一个指针,这个指针指向内存中的另一个位置,该位置保存对象 1.2.1 5种基本数据类型:Undefined、Null、Boolean、Number、String在内存中分别占有固定大小的空间,保存在栈内存中 1.2.2 按值访问:对于保存基本数据类... 阅读全文

posted @ 2013-05-22 10:29 Amy-lover 阅读(3278) 评论(0) 推荐(1) 编辑

2013年5月21日

摘要: 一、语法 1.1 区分大小写 1.2 标示符第一个字符必须是字母,下划线或者$,其他字符可以是数字,字母,下划线以及$ 1.3 单行注释//,多行注释/**/ 1.4 语句结尾尽量加上分号,因为代码压缩的时候,可能会因为语句结尾没有分号而出错二、变量 2.1 ECMAScript的变量是松散型的,即可以用来保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符而已,使用var来定义变量 2.2 如果使用var操作符来定义变量,那么这个变量就成为定义该变量的作用域中的局部变量,如果不使用var操作符的变量则是全局变量三、数据类型 3.1 ECMAScript有5种简单数据类型,一... 阅读全文

posted @ 2013-05-21 10:47 Amy-lover 阅读(249) 评论(0) 推荐(2) 编辑