1.区分大小写
ECMAScript中的一切(变量,函数名和操作符)都区分大小写。这也就意味着,变量名test和变量名Test分别表示两个不同的变量,而函数名不能使用typeof,因为它是一个关键字,但typeOf则完全可以是一个有效的函数名
2.标识符
所谓标识符,就是指变量,函数,属性的名字,或者函数的参数。标识符可以是按照下列格式规则组合起来的一或多个字符:
<!--[if !supportLists]-->a.<!--[endif]-->第一个字符必须是一个字母,下划线(_)或一个美元符号($) ;
<!--[if !supportLists]-->b.<!--[endif]-->其他字符可以是字母,数字,下划线或美元符号($)。
标示符中的字母
3. Number类型
Number类型应该是ECMAScript中最令人关注的数据类型了,这种类型使用IEEE754格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值)。为支持各种数值类型,ECMA-262定义了不同的数值字面量格式。
在进行算数计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。
由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数值转换为整数值。
var num1 = 10.0;//此浮点数会转换成整数值来存储
NaN
NaN,即非数值(Not a Number)是一个特殊的数值(可以用alert(typeof NaN ); 返回”number”),这个数值用于表示一个本来应该返回一个数值却未返回一个数值的情况(这样就不会抛出错误了)。Eg:在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在ECMAScript中任何数值除以0会返回NaN,因此不会影响其他代码的执行。
NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(eg:NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。Eg: alert(NaN == NaN) ; //false
针对NaN的这两个特点,ECMAScript定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们定义这个参数是否”不是数值”。IsNaN()在接受到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,eg:字符串”10”或Boolean。而任何不能被转换为数值的值都将会导致这个函数返回true。
alert(isNaN(“10”));//false,字符串”10”可以转换成数字10
alert(isNaN(true));//false,Boolean值true可以转换为数值1。Boolean值false可以被转换成0
数值转换
有3个函数可以把非数值转换为数值:Number(), parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专用于把字符串转换成数值
在使用parseInt()是最好指定基数,这个可以避免ECMAScript 3与ECMAScript 5的分歧。Eg:
在ECMAScript 3中,parseInt(“070”);//56(八进制)
在ECMAScript5中,parseInt(“070”);//0,因为在ECMAScript5 Javascript引擎中,parseInt()已经不具有解析八进制的能力,因此签到
parseFloat()只解析十进制值,因此它没有用第二个参数指定基数的用法。另外,如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后都是零),parseFloat()会返回整数(整数所需的存储空间是浮点数所需的存储空间的一半),以下是使用parseFloat()转换数值的几个典型示例。
var num1 = parseFloat(“0xA”);//0, 十六进制格式字符串始终被转换成0
var num2 = parseFloat(“0908.5”);//908.5
4. String类型
String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号(“)或单引号(‘)表示,因此下面两个字符串的写法都是有效的:
var firstName = “gaoweigang”;//以双引号开头的字符串必须以双引号结尾
var lastName = ‘gaoweigang’;//以单引号开否的字符串必须以单引号结尾
如果字符串中包含双字节字符,那么length属性可能不会精确地返回字符串中的字符数目。
字符串的特点
ECMAScript中的字符串是不可变,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,eg:
var lang = “java”;
lang = lang + “script”;
以上示例中的变量lang开始时包含字符串”java”。而第二行代码把lang的值重新定义为”java”与”script”的组合,即”javascript”。实现这个操作的过程如下:首先创建一个能容纳10个字符的新字符串
5. Object类型
ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建,而创建Object类型的实例并为其添加属性和方法,就可以创建自定义对象,如下所示:
var o = new Object();
在ECMAScript中,如果不给构造函数传递参数,则可以省略后面的那一对圆括号。Eg:
var o = new Object;//有效,但不推荐省略圆括号
仅仅创建Object的实例并没有什么好处,但关键是要理解一个重要的思想:即在
ECMAScript中(就像Java中的java.lang.Object对象一样),Object类型是所有其他的实例的基础。换句话说,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。
从技术角度讲,ECMA-262中对象的行为不一定适用于JavaScript(ECMA-262只是JavaScript的核心部分,并不是全部)中的其他对象。浏览器环境中的对象,比如BOM和DOM中的对象,都属于宿主对象,因为它们是由宿主实现提供和定义的。ECMA-262不负责定义宿主对象,因此宿主对象可能会也可能不会继承Object
6.函数
return语句也可以不带任何返回值。在这种情况下,函数在停止执行后将返回undefined值。这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下。
ECMAScript函数的参数与大多数其他语言中的函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个,三个甚至不传递参数,而解析器永远不会有什么怨言。之所以会这样,原因是ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没有问题。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
命名的参数只提供便利,但不是必须的。另外,在命名参数方面,其他语言可能需要事先创建函数签名,而将来的调用必须与该标签名一致。
关于arguments的行为,还有一点比较有意思。那就是它的值永远与对应命名参数的值保持同步,修改arguments的值会影响相应的命名参数的值。但是它们(arguments与命名参数)内存空间是独立的,这种影响是单向的:修改命名参数不会改变arguments中对应的值。
arguments对象的长度是由传入参数个数决定的,不是有定义函数时的命名参数的个数决定的
eg:
function test(num1, num2){
arguments[1] = 20;
alert(num2);//undefined,因为只传递了一个参数
alert(arguments[1]);//20;
}
test(10);//只传一个参数,那么arguments的长度就为1,
注意:ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数。
Problem:
在javaScript中,为什么0.1+0.2 不等于0.3?
相关推荐
JAVASCRIPT基本概念[整理].pdf
总之,JavaScript的基本数据结构和类型构成了语言的基础,理解这些概念对于学习和掌握JavaScript至关重要。通过在HTML中嵌入JavaScript代码,可以实现丰富的网页动态效果和用户交互,为Web开发打开新的可能性。
### 关于 JavaScript 的基本概念、特性、常用框架和应用领域的详细介绍 #### 一、基本概念 **1. 动态类型** JavaScript 是一种动态类型语言,这意味着变量的类型是在运行时确定的。开发者无需在声明变量时指定其...
总体而言,《Eloquent JavaScript》第二版是一本适合初学者的教材,它不仅介绍了JavaScript语言的基本语法和程序设计的基本概念,还提供了深入的理解,帮助读者掌握编程的精髓。此外,书中还包含了对现代JavaScript...
Javascript 中的运算符包括基本运算符、逻辑运算符、赋值运算符、关系运算符、相等运算符等。运算符的优先级也很重要,需要根据不同的运算符来确定运算的顺序。 控制结构 Javascript 中的控制结构包括顺序结构、...
这个"JavaScript基本构造图.zip"文件包含了对JavaScript基础知识的系统整理,涵盖了多个核心概念,包括BOM(浏览器对象模型)、DOM(文档对象模型)、变量、函数、流程控制、数据类型、数组、运算符、正则表达式以及...
JavaScript是一种常用的脚本语言,它的语法与C++有相似之处,但去除了C语言中可能导致错误的指针概念,同时提供了丰富的类库。这使得熟悉C++或C语言的...了解这些基本数据类型和变量的概念是掌握JavaScript编程的基础。
JavaScript是一种广泛应用于网页和应用程序的脚本语言,它的基本语法是学习和掌握JavaScript的基础。...通过30分钟的学习,你可以快速入门JavaScript的基本概念,但要成为真正的专家,还需要不断实践和深入学习。
2. **简化开发流程**:使用JavaScript可以更高效地完成页面交互功能,减少服务器端的压力。 3. **提高开发效率**:JavaScript的学习曲线较为平缓,掌握基本语法之后即可快速上手开发项目。 4. **市场需求大**:随着...
一、 JavaScript 基本概念 * JavaScript是一种基于对象的脚本语言 * JavaScript是客户端脚本语言,运行在用户的浏览器中 * JavaScript可以实现网页的交互功能 二、 JavaScript 中的函数 * 函数是JavaScript中的一...
对于任何想要深入JavaScript的开发者来说,了解并掌握一些核心概念至关重要。以下是对“每个JavaScript开发人员应该知道的33个概念”的详细阐述。 1. 变量与数据类型:JavaScript支持变量,包括var、let和const的...
1. **基础语法**:讲解了变量、数据类型、运算符、流程控制(如条件语句、循环)、函数等基本元素,帮助初学者建立JavaScript编程的基本框架。 2. **对象和原型**:深入探讨了JavaScript的面向对象特性,包括对象...
学习JavaScript,首先应该理解这些基本概念,然后逐步深入到更高级的主题,如异步编程(回调函数、Promise、async/await)、闭包、模块系统、正则表达式、错误处理、类型转换等。此外,JavaScript还支持面向对象编程...
了解这些基本数据类型及其用法是学习JavaScript的第一步。操作符如赋值、比较和逻辑操作符则是编写程序逻辑的关键。此外,流程控制语句(如if...else、for、while)帮助我们根据条件执行不同的代码块,实现程序的...
### JavaScript的核心概念 #### 变量与数据类型 JavaScript是一种弱类型的语言,这意味着变量在声明时不需要指定类型,而类型是在运行时自动确定的。它支持基本数据类型如数字(Number)、字符串(String)、布尔值...
通过这个文档,学习者可以系统地了解JavaScript的核心概念和用法。 其次,"《JScript 语言参考》中文版.chm"可能针对的是微软的JScript,它是ECMAScript的一个实现,与JavaScript非常相似。虽然JScript主要用于...
首先,JavaScript的基本语法是学习的起点。它是一种基于原型的、动态类型的、弱类型的脚本语言。这意味着在编写代码时,无需提前声明变量的类型,变量可以在运行时改变其数据类型。JavaScript的主要结构包括语句(如...
总的来说,这个“JavaScript作业”可能涵盖了以上所述的多个知识点,通过完成这些作业,学习者可以系统地掌握JavaScript的基本语法和高级特性,为成为前端或全栈开发者打下坚实基础。在实践中,不断编写代码、调试和...
JavaScript支持面向对象编程,其中可能包含类的概念、构造函数、原型链、继承、封装和多态等。这部分内容可以帮助开发者理解和创建复杂的对象结构。 三、DOM操作 由于JavaScript主要用于网页交互,DOM(Document ...