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”
- JavaScript与其他语言的区别与联系01
- Python与其他语言的区别
- javascript中的string与其他语言string的一些不同
- 人与其他事物的联系
- c++与其他语言的语法区别总结
- 什么是JavaScript中的面向对象?与其他编程语言的面向对象有什么区别?什么是原型?
- 与LSGO一起学“第1章 初识C++(1.5 C++与其他语言的区别)”
- Python的与其他语言的不同
- C#与其他语言的比较
- Java与其他语言的互操作性
- 转载的论C++与其他语言
- Java与其他语言的互操作性
- Java与其他语言的对比
- PHP与其他语言的比较
- 工厂模式与其他几种模式的联系
- is() 与其他遍历的区别
- oracle与其他数据库的区别
- Webpack与其他打包工具的区别
- sata和IDE在linux下命名规则
- 【Android】如何用听筒播放音乐,并且按键控制音量
- linux命令——文件操作——分割,追加,拼接
- 易地掌控And6jiroid设备及应用程序的奥秘
- iOS实现自己的web浏览器(canGoBack)
- JavaScript与其他语言的区别与联系01
- Eclipse juno 安装mvn,报错Software being installed: m2e - slf4j over logback logging
- shell编程经验总结
- MFC中UpdateData函数的使用功能
- iOS - 用Hopper反编译 Nike+ 二进制文件
- mac下显示和隐藏文件夹
- Spring-boot web 工程构建,并把maven子项目模块依赖jar打包,笔记
- DAO设计模式
- Address family not supported by protocol family: connect