JavaScript与其他语言的区别与联系01

来源:互联网 发布:网页游戏源码架设教程 编辑:程序博客网 时间:2024/04/30 01:19

   JS是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成:

     1.ECMAScript,提供核心语言功能;

     2.文档对象模型(DOM),提供与浏览器交互的方法与接口;

     3.浏览器对象模型(BOM),提供与浏览器交互的方法和接口。

语法: ECMAScript的语法大量借鉴了C及其他类C语言(Java和Perl)的语法。

注释:ECMAScript使用C风格的注释,包括单行注释和块级注释。

语句:可以使用C风格的语法把多条语句组合到一个代码块中。

操作符:递增和递减操作符直接借鉴自C,而且各有两个版本:前置型和后置型。

函数参数:ECMAScript函数的参数与大多数其他语言中函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎传递进来参数是什么数据类型。

                   ECMAScript中的参数在内部是用一个数组表示的。在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。

函数不能实现重载:ECMAScript函数不能像传统意义上那样实现重载。而在其他语言(如java)中,可以为一个函数编写两个定义,只要这两个定义的签名不同即可。ECMAScript函数没有签名,应为其参数是由包含零或多个值得数组来表示的。而没有函数签名,真正的重载是不可能做到的。

数据类型:ECMAScript没有为整点和浮点数值分别定义不同的数据类型,Number类型可用于表示所有数值。ECMAScript有一种复杂的数据类型Object类型,该类型是这门语言中所有对象的基础类型。

                 在ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。
               ECMAScript中的基本数据类型:Undefined、null、Boolean、Number、String
复杂数据类型:Object(该类型是所有对象的基础类型),保存在栈中,指向堆。
ECMAScript没有为整数和浮点数值分别定义不同的数据类型,Number类型可用于表示所有类型。
无需指定函数的返回值,因为任何ECMAScript函数都可以在任何时候返回任何值。
实际上,未指定返回值的函数返回的是一个特殊的Undefined值。ECMAScript中没有函数签名的概念,因为其函数参数是以一个包含零或多个值的数组的形式传递的。
可以向ECMAScript函数传递任意数量的参数,并且可以通过arguments对象来访问这些参数。
由于不存在函数签名(参数个数与类型)的特性,ECMAScript函数不能重载。
变量、作用域和内存问题
变量:包含两种数据类型值(基本类型值(Undefined、null、Boolean、Number、String)、引用类型值(Object))
基本类型值保存在栈内存中,引用类型是指保存在堆内存中的对象,意思是变量中保存的实际是一个指针,这个指针指向内存中的另外一个位置,该位置保存对象。
栈内存中保存着基本类型值和引用类型指针。堆内存中保存引用类型值指向的值(对象)。
对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。
检测类型:ECMAScript提供了instanceof操作符,检测变量是是什么类型的对象。
typeof弊端:如果变量的值是一个对象或null,则typeof操作符会返回object.
            使用typeof操作符检测函数时,该操作符会返回“function”。在Safari和Chrome中使用typeof检测正则表达式时,这个操作符会错误的也返回“function”

0 0
原创粉丝点击