javascript(一)
2015-07-16 18:51
603 查看
一、JavaScript简介
JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成:
ECMAscript,由ECMA-262定义,提供核心语言功能;
文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
JavaScript的这三个组成部分,在当前五个主要浏览器(IE/Firefox/Chorme/Safari/Opera)中都得到了不同程度的支持。其中,当所有浏览器对ECMAScript第三版的支持大体上都还不错,而对ECMAScript5的支持程度越来越高,但对DOM的支持则彼此相差比较多。
二、在HTML中使用JavaScript
把JavaScript插入到HTML页面中要使用<script>元素。
所有的<script>元素都会按照它们在页面中出现的先后顺序依次被解析。在不使用defer和async属性的情况下,只有在解析完前面<script>元素中的代码之后,才会开始解析<script>元素中的代码。
一般把<script>元素放在页面最后,即主要内容后面,</body>标签前面
使用defer属性可以让脚本在文档完全呈现之后再执行。延迟脚本总是按照指定他们的顺序执行。
使用async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。不能保证异步脚本按照他们在页面中出现的顺序执行。
<noscript>元素:用以在不支持JavaScript的浏览器(或浏览器支持脚本,但脚本被禁用)中显示替代的内容。
三、基本概念
用var操作符定义的变量将成为定义该变量的作用域中的局部变量,省略var操作符则创建为一个全局变量。
NaN,即非数值是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,任何数值除以0会返回NaN,NaN与任何值都不相等,包括NaN本身。
for-in语句,是一种精准的迭代语句,可以用来枚举对象的属性。
通过访问arguments对象的length属性可以获知有多少个参数传递给了函数。
没有重载。如果在ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。
四、变量、作用域和内存问题
对于引用类型的值,可以为其添加属性和方法,也可以删除改变属性和方法;但不能给基本类型的值添加属性。
从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本,两个值完全独立,操作互不影响。
从一个变量向另一个变量复制引用类型的值,复制的是指针,因此两个变量最终都指向同一个对象,操作互相影响。
确定一个值是那种基本类型可用typeof操作符,而确定一个值是哪种引用类型的可以用instanceof操作符。
所有变量都存在于一个执行环境当中,这个环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量。
执行环境有全局执行环境和函数执行环境;
每次进入一个新执行环境,都会创建一个用于搜素变量和函数的作用域链;
函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含(父)环境,乃至全局环境;
全局环境只能访问在全局环境中定义的变量和函数,而不能直接访问局部环境中的任何数据;
变量的执行环境有助于确定应该何时释放内存;
6.JavaScript是一门具有自动垃圾收集机制的编程语言,开发人员不必关心内存分配和回收问题
离开作用域的值将被自动标记为可以回收,因此将在垃圾收集期间被删除
“标记清除”是目前主流的垃圾收集算法,这种算法的思想是给当前不使用的值加上标记,然后再回收其内存
另一种垃圾收集算法是“引用计数”,这种算法的思想是跟踪记录所有值被引用的次数。IE中仍在使用,当代码中存在循环引用现象时,就会导致问题。
解除变量的引用不仅有助于消除循环引用现象,而且对垃圾收集也有好处。为了确保有效地回收内存,应该及时解除不在使用的全局对象、全局对象属性以及循环引用变量的引用。
JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成:
ECMAscript,由ECMA-262定义,提供核心语言功能;
文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
JavaScript的这三个组成部分,在当前五个主要浏览器(IE/Firefox/Chorme/Safari/Opera)中都得到了不同程度的支持。其中,当所有浏览器对ECMAScript第三版的支持大体上都还不错,而对ECMAScript5的支持程度越来越高,但对DOM的支持则彼此相差比较多。
二、在HTML中使用JavaScript
把JavaScript插入到HTML页面中要使用<script>元素。
所有的<script>元素都会按照它们在页面中出现的先后顺序依次被解析。在不使用defer和async属性的情况下,只有在解析完前面<script>元素中的代码之后,才会开始解析<script>元素中的代码。
一般把<script>元素放在页面最后,即主要内容后面,</body>标签前面
使用defer属性可以让脚本在文档完全呈现之后再执行。延迟脚本总是按照指定他们的顺序执行。
使用async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。不能保证异步脚本按照他们在页面中出现的顺序执行。
<noscript>元素:用以在不支持JavaScript的浏览器(或浏览器支持脚本,但脚本被禁用)中显示替代的内容。
<noscript>Sorry, your browser does not support JavaScript! Hello World! </noscript>
三、基本概念
用var操作符定义的变量将成为定义该变量的作用域中的局部变量,省略var操作符则创建为一个全局变量。
NaN,即非数值是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,任何数值除以0会返回NaN,NaN与任何值都不相等,包括NaN本身。
for-in语句,是一种精准的迭代语句,可以用来枚举对象的属性。
通过访问arguments对象的length属性可以获知有多少个参数传递给了函数。
没有重载。如果在ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。
四、变量、作用域和内存问题
对于引用类型的值,可以为其添加属性和方法,也可以删除改变属性和方法;但不能给基本类型的值添加属性。
从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本,两个值完全独立,操作互不影响。
从一个变量向另一个变量复制引用类型的值,复制的是指针,因此两个变量最终都指向同一个对象,操作互相影响。
确定一个值是那种基本类型可用typeof操作符,而确定一个值是哪种引用类型的可以用instanceof操作符。
所有变量都存在于一个执行环境当中,这个环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量。
执行环境有全局执行环境和函数执行环境;
每次进入一个新执行环境,都会创建一个用于搜素变量和函数的作用域链;
函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含(父)环境,乃至全局环境;
全局环境只能访问在全局环境中定义的变量和函数,而不能直接访问局部环境中的任何数据;
变量的执行环境有助于确定应该何时释放内存;
6.JavaScript是一门具有自动垃圾收集机制的编程语言,开发人员不必关心内存分配和回收问题
离开作用域的值将被自动标记为可以回收,因此将在垃圾收集期间被删除
“标记清除”是目前主流的垃圾收集算法,这种算法的思想是给当前不使用的值加上标记,然后再回收其内存
另一种垃圾收集算法是“引用计数”,这种算法的思想是跟踪记录所有值被引用的次数。IE中仍在使用,当代码中存在循环引用现象时,就会导致问题。
解除变量的引用不仅有助于消除循环引用现象,而且对垃圾收集也有好处。为了确保有效地回收内存,应该及时解除不在使用的全局对象、全局对象属性以及循环引用变量的引用。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象
- javascript asp教程创建数据库连接
- javascript asp教程错误处理
- javascript asp教程第十课--global asa