首页 web前端 js教程 ECMAScript 基础知识_javascript技巧

ECMAScript 基础知识_javascript技巧

May 16, 2016 pm 07:11 PM
ecmascript 基础知识

JavaScript的核心之一ECMAScript的语言特性和Java、C、Perl都有许多相似之处,其中不少特性都是从这些语言借鉴而来,同时它们之间也存在许多差异。下面列举一些ECMAScript的基本特性。

   --和Java一样,ECMAScript区分大小写,注释的格式相同,通过{}确定代码块,原始数据类型存储在堆栈,对象的引用存储在堆中
   --ECMAScript是一种松散的语言,ECMAScript通过var操作符声明变量,并且不限类型,例如var n = 25,那么n就是数字类型,var n = "string" ,那么n就是String类型
   --在每一行代码后,可以不写分号,ECMAScript自动认为该行的末尾为该行代码的最后;ECMAScript中的变量可以不用初始化,在幕后系统将自动完成初始化操作
   --同一变量可以赋予不同类型的数据;变量的第一个字符只能是字母、下划线或$ ,其他的字符可以是下划线、$、或任意的字母、数字、字符
   --和其他语言一样,变量最好遵循驼峰书写法,或Pascal表示法、或匈牙利表示法
   --和大多数语言不同的是, ECMAScript 变量在使用之前可以不必声明,系统会自动将该变量声明为全局变量,例如var m = " Good " ; n = m   " Morning " ; alert(n)输出结构是 " Good Morning " 
   --在大多数语言里,String是对象,在ECMAScript中却是原始数据类型

   原始数据类型 

   ECMAScript原始数据类型有五种:Undefined、Null、Boolean、Number、String。

   typeof—判断变量和值的数据类型,通常有undefined、boolean、number、string、object五种类型。
   Undefined—当变量被声明但没有初始化,或函数没有明确返回一个值的时候,该变量或函数即为 Undefined 类型。
   Null—undefined是null的一种派生,当代表一个对象的值不存在时,该对象返回null。
   Boolean—包含两个值,true and false , false不等于0,但0可以转换为false 。
   Number—可以定义32位整型数据或64位浮点型数据。定义数字类型变量时,在数字前加0即为八进制,加0x为十六进制,它们计算后返回的结果统一为十进制。通过var f = 1.0可以定义一个浮点类型变量,有意思的是,当f被用于计算之前,它实际是以 String类型存储的。当浮点类型数据很大或很小时(可以前后移动六位),将使用E表示法来表示浮点数据,最大可以存储17位数据。另外,isFinite()方法可以判断一个数值是否有限,isNaN()方法可以判断一个数据是非数字类型。
   String—String在ECMAScript中是原始数据类型,并且是唯一没有空间大小限制的数据类型。和Java不同的是,var s = " javascript " 和var s = 'javascript'均是合法的表示方法。

   数据转换 

   在不同数据类型之间转换是任何一门编程语言的一个重要特性,ECMAScript提供了一系列简单的方法来实现数据的转换,大多数数据类型都提供了简单的转换方法,对于复杂的转换则有一些全局方法来完成,不管是哪一种方法,ECMAScript中数据转换都非常简单。 

   Boolean、number和string数据类型是原始数据类型,但它们同时是伪对象(在ECMAScript中伪对象到底该怎么解释,运行机制如何还不清楚?有人知道请给予解答),拥有自己的属性和方法,可以通过toString()方法来实现string类型的转换。ECMAScript定义所有的对象,不管是伪对象还是真实的对象,都可以实现toString()方法,string被列为伪对象的行列,自然也拥有toString()方法。将数字类型数据转换为string的时候,可以在 toString() 方法中加入2、8、16参数,来实现不同进制的数据输出,例如var n = 10; alert(n.toString(2))输出为1010,alert(n.toString(8))输出为12,n.toString()和n.toString(10)相同。 

   ECMAScript提供了两种方法来实现string类型转化为数字类型的方法:parseInt()和parseFloat()。其他类型转换将会返回 NaN(Not a Number)。

   Type Casting

   ECMAScript数据类型的转换通常可以通过三个方法来实现:Boolean(value)、Number(value)和String(value),这样通常会产生一些非预期的结果。

   Boolean



var b1 = Boolean( "" );  // false–empty string 
var b2 = Boolean( " hi " );  // true–non-empty string 
var b3 = Boolean( 100 );  // true–non-zero number 
var b4 = Boolean( null );  // false-null 
var b5 = Boolean( 0 );  // false-zero 
var b6 = Boolean( new Object());  // true–object 

   Number 



Number( false )  0 
Number( true )   1 
Number(undefined) NaN
Number( null )  0 
Number( " 5.5 " )  5.5 
Number( " 56 " )  56 
Number( " 5.6.7 " ) NaN
Number( new Object()) NaN
Number( 100 )  100 

   String

   String()能实现所有类型数据的直接转换,和使用toString()不同的是,String()能够将null或undefined数据转换为string。

   引用类型

   ECMAScript 实际上并没有传统意义上的类,只是通过定义对象来等同于其他语言中的类,这一点我还比较含糊,以后可能会明白,在文中还是以“类”来说明。



var  ob  =   new  Object(); 

   以上定义了一个Object对象的实例,这种语法和Java比较类似。当有参数的时候需要括号来引用,当不存在参数时,括号可以去掉。由于ECMAScript语言比较松散,不管是前面所属的基础语法,还是后面将提到的语法知识,我们都应该尽量按照一定的书写规范来约定自己的代码格式,而不应充分发挥语言松散的特点。

   Object类

   Object类和Java里的java.lang.Object类比较相似,它是ECMAScript中其他所有类的基类,它具有如下属性:

   constructor—建立对象的函数的一个引用,对于Object类而言,该引用指向本地Object()方法。
   prototype—对象里prototype对象的一个引用值。

   Object 类拥有的方法:

   hasOwnProperty(property)—判断property属性是否存在于对象中,property数据类型为string
   isPrototypeOf(object)— 判断一个对象是否是另一对象的 prototype
   propertyIsEnumerable(property)— 判断所给出的属性能否使用 for 语句列举出来
   toString()—返回对象的原始类型string
   valueOf()—返回对象合适的原始值,对于多数类而言,返回的值和toString()相同
   Object类的每一个属性和方法都被其他的类所重写

   Boolean类

   定义方法var ob = new Boolean(true); ob是Boolean原始数据类型的一个引用。在使用Boolean对象过程中,需要注意,所有的对象会自动转变为true,因此var ob1 = new Boolean(false);  var ob2 = ob1 && true; 最后ob2的值是true,非false。一般情况下,使用Boolean原始数据类型可以避免这种情况。

   Number类

   定义方法var o = new Number(15);
   获得原始数据的值var n = o.valueOf();

   Number类有一些为数字类型的值特别设计的方法:



alert(o.toFixed( 2 ));   // 输出15.00 
alert(o.toExponential( 1 ));   // 输出1.5e 1 

   在无法确定使用 toFixed 还是 toExponential 的时候,可以使用 toPrecision 方法来获得取值:



alert(o.toPrecision( 1 ));   // 输出 2e 1 
alert(o.toPrecision( 2 ));   // 输出 15 
alert(o.toPrecision( 3 ));   // 输出 15.0 

   String类

   String类是一种复杂引用类型,这里仅列出一些常见的方法,其中不少都是模仿java.lang.String:



var  s  =   new  String( " Good Morning " );
alert(s.valueOf()  ==  s.toString());   // 输出true 
alert(s.length);   // 输出12 
alert(s.charAt( 1 ));   // 输出o 
var  sr  =  s.concat( "  ! " ); alert(sr);   // 输出Good morning ! 
alert(s.indexOf( " o " );   // 输出1 
alert(s.lastIndexOf( " o " );   // 输出6 
alert(s.localeCompare(Good morning));   // 输出0 
alert(s.localeCompare(Apple));   // 输出1 
alert(s.localeCompare(House));   // 输出-1 
alert(s.slice( 2 ));   //  输出od morning 
alert(s.substring( 2 ));   //  输出od morning 
alert(s.slice( 2 ,  - 5 ));   //  输出od mo 
alert(s.substring( 2 ,  - 5 ));   // 输出Go 
alert(s.toUpperCase());   // 输出GOOD MORNING 
alert(s.toLowerCase());   // 输出good morning 

   另外,所有String类的方法同样可以用于String原始数据类型,因为它是伪对象。

   instanceof 

   instanceof操作符和typeof作用类似,不同的是,instanceof需要明确指定对象是否属于某种特定类型。例如



var  s  =   new  String( " Good morning ! " );
alert(s  instanceof  String); 

   操作符和语句 

   ECMAScript 中大多数操作符、语句和 Java 都比较类似,但也有一些其特有的,如 label 语句, with 语句, for-in 语句等等。

   Functions

   Functions是ECMAScript的核心,在任何时候任何地方都可以运行的一组代码语句。



 function  functionName(arg0, arg1, …… , argN)   {
 statements


   当function没有返回值或return语句后没有值的时候,该function实际上会被系统定义为undefined,当function返回值的时候,function可以不必明确指定为某种数据类型。

   关于重载

   重载是面向对象语言的基本特性之一,但 ECMAScript 的 functions 并不能重载,在同一范围里可以定义两个完全相同的函数,在调用函数的时候,最后的一个函数发挥作用。这种特性比较麻烦,但可以通过 arguments 对象来实现和重载类似的功能。



 function  func()   {
  if (arguments.length  ==   1 )   {
   alert(arguments[ 0 ]      5 );
 }   else   if  (arguments.length  ==   2 )   {
     alert(arguments[ 0 ]     arguments[ 1 ]);
   } 


func( 5 );   // 输出10 
func( 10 ,  15 );   // 输出25 

   前面提到过,在同一范围里可以定义两个完全相同的function,在调用function的时候,最后的一个function发挥作用。



 function  func(i)   {
 alert(i      10 );

 function  func(i)   {
 alert(i      20 );

func( 5 );   // 输出25 

   可以看出,是调用了最后的一个function使得数据结果为25,如果使用Function类来定义以上两个函数,那为什么会使用最后的一个function可能会更明确一些。 



var  func  =   new  Function(“i”, “alert(i      10 )”);
var  func  =   new  Function(“i”, “alert(i      20 )”);
func( 5 ); 

   func指向了另外一个引用,从而值发生了改变,func是作为function对象的引用而存在的,并且允许两个变量指向同一个 function。

   和Function类相关的属性、方法有许多,例如length、toString()、valueOf()等等。其中toString()在调试程序中使用较多。 

原文:http://www.blogjava.net/flyingis/archive/2006/06/13/52484.html 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

es2017是es6还是es8 es2017是es6还是es8 Oct 27, 2022 pm 05:37 PM

es2017是es8。es全称“ECMAScript”,是根据ECMA-262标准实现的通用脚本语言,而由2017年6月正式发布的版本,其正式名为ECMAScript2017(ES2017),因其是ECMAScript的第8个版本,因此可简称为es8。

一文快速详解ES6~ES12的全部特性! 一文快速详解ES6~ES12的全部特性! Jul 22, 2022 am 11:06 AM

本篇文章给大家整理分享一下ECMAScript特性,带大家花一个小时,迅速了解ES6~ES12的全部特性。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

从头学习:掌握Go语言的基础知识 从头学习:掌握Go语言的基础知识 Feb 01, 2024 am 08:45 AM

从零开始:学习Go语言的基础知识简介Go语言,又称Golang,是一种由Google开发的开源编程语言。它于2009年发布,并迅速成为一种流行的语言,尤其是在Web开发、分布式系统和云计算等领域。Go语言以其简洁、高效、并发性强等特点而著称。基本语法1.变量和常量在Go语言中,变量和常量都是类型化的。变量可以存储数据,而常量则不能改变。变量的声明格式为:v

学习MySQL必看!详细讲解SQL语句基础知识 学习MySQL必看!详细讲解SQL语句基础知识 Jun 15, 2023 pm 09:00 PM

MySQL是一个开源的关系型数据库管理系统,被广泛地应用于Web应用程序的开发和数据存储。学习MySQL的SQL语言对于数据管理员和开发者来说是非常必要的。SQL语言是MySQL中的核心部分,因此在学习MySQL之前,你需要对SQL语言有充分的了解,本文旨在为你详细讲解SQL语句基础知识,让你一步步了解SQL语句。SQL是结构化查询语言的简称,用于在关系型数

学习canvas,需要了解哪些基本概念? 学习canvas,需要了解哪些基本概念? Jan 17, 2024 am 10:37 AM

学习canvas需要掌握哪些基础知识?随着现代Web技术的发展,使用HTML5中的<canvas>标签进行绘图成为一种常见的方式。Canvas是一种用于绘制图形、动画和其他图像的HTML元素,它可以利用JavaScript进行操作和控制。如果你想要学习canvas并掌握其基础知识,下面将为你详细介绍。HTML和CSS基础知识:在学习canvas之

Go语言编程入门指南:基础知识与实际应用速成 Go语言编程入门指南:基础知识与实际应用速成 Jan 23, 2024 am 09:31 AM

快速入门Go语言编程:基础知识与实践指南Go语言作为一门新兴的编程语言,因其简洁、高效和并发性而备受开发者的青睐。无论你是初学者还是有一定编程经验的开发者,本文将带你快速入门Go语言编程,并提供一些实践指南和具体代码示例。一、安装Go语言环境要开始使用Go语言进行编程,首先需要在你的计算机上安装Go语言环境。你可以从Go官方网站(https://golang

Yii框架的一些基础知识 Yii框架的一些基础知识 Jun 21, 2023 pm 07:07 PM

Yii是一款流行的面向对象PHP框架,它的全称是“YesItIs”,表示“是的,它就是这样的”。它的设计目标是高效、快速、安全和易于使用,因此被广泛应用于大型Web应用程序的开发中。在这篇文章中,我们将介绍Yii框架的一些基础知识,帮助新手更好地了解这个框架。MVC架构Yii框架采用了基于MVC(Model-View-Controller)的设计模式,这

深入探讨Go语言程序的基础知识 深入探讨Go语言程序的基础知识 Mar 05, 2024 am 08:15 AM

《Go语言程序基础知识深入探讨:具体代码示例解析》Go语言作为一种快速、高效的编程语言,越来越受到程序员和开发者的青睐。在学习和掌握Go语言的过程中,深入了解其基础知识是至关重要的。本文将从变量、数据类型、流程控制以及函数等方面展开深入探讨,同时结合具体的代码示例来帮助读者更好地理解和掌握Go语言的基础知识。变量和数据类型在Go语言中,变量的声明和初始化非常

See all articles