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

本文深入介绍了JS的基础构成,包括ECMAScript、DOM及BOM的基本概念。探讨了JS的语法特性,如函数参数处理方式、数据类型特点以及作用域与内存管理等关键问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   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”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值