首页 > 编程语言 >JavaScript(02): ECMAScript基础

JavaScript(02): ECMAScript基础

时间:2023-06-20 15:07:46浏览次数:51  
标签:02 函数 JavaScript Number alert 运算符 ECMAScript 类型


ECMAScript提供了实现通用程序设计任务必需的JavaScript的语法、运算符和基本对象。

1. 语法

ECMAScript借用了Java、C等语言的语法,对于熟悉这些语言的开发者掌握ECMAScript的语法应该是非常容易的。

  • 区分大小写
  • 变量是弱类型:定义变量时只用var关键字并且可以将变量初始化为任意值
  • 每行结尾的分号可有可无(一个良好的习惯是总是在语句的末尾加上分号,因为如果没有分号在有的浏览器中可能会无法正确运行)
  • 注释与Java和C语言等相同
  • 括号表示代码块

2.变量


由于是弱类型语言,变量可以存放不同类型的值;但是在使用变量的时候,一个好的习惯是始终存放相同类型的值。

变量命名需要遵守两条简单的规则:


  1. 第一个字符必须是字母、_或$
  2. 余下的字符可以是_、$、数字字符或任何字母



注意:ECMAScript的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值,但是这样做是危险的。良好的编程习惯应当是总是声明所有变量。





3. 关键字和保留字


关键字(keyword)是有特殊含义的单词,是系统保留的不能用做变量名或函数名的特殊符号。

break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、
instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with




保留字(reserved word)是为将来的关键字而保留的单词。

abstract、boolean、byte、char、class、const、debugger、double、enum、export、
 
 
extends、final、float、goto、implements、import、int、interface、long、native、
 
 
package、private、protected、public、short、static、super、synchronized、throws、
 
 
transient、volatile




4. 原始值和引用值


变量可以存放两种类型的值:原始值和引用值


  • 原始值(primitive value):存储在栈(stack)上的简单数据段
  • 引用值(reference value):存储在堆(heap)中的对象




5. 原始类型


ECMAScript有5种原始类型,即Undefined、Null、Boolean、Number和String,通过typeof运算符可以判断一个值是否在某种类型的范围内。
~Undefined类型:该类型只有一个值undefined,当声明的变量没有初始化时它的默认值是undefined。
var temp;
alert(temp == undefined);    // true
alert(typeof temp);    // "undefined"
当函数无明确的返回类型时,返回类型也是undefined。
~Null类型:Null类型也只有一个值null,值undefined实际上是从null派生来的,因此ECMAScript将它们定义为相等的
 
 
~Boolean类型:有两个值true和false
 
 
~Number类型:这种类型既可以表示32位整数,也可以表示64位浮点数。有几个特殊值也被定义为Number类型,分别是:Number.MAX_VALUE和Number.MIN_VALUE,还有当计算生成的数值大于Number.MAX_VALUE时,将被赋予Number.POSITIVE_INFINITY(Infinity);同样,生成的数值小于Number.MIN_VALUE时,将被赋予Number.NEGATIVE_INFINITY
 
 
(-Infinity)。可以用isFinite()方法判断一个数值是不是无穷大。还有一个特殊值是NaN。NaN和无穷大都不能用于算数计算,另外NaN与自身不相等。

alert(NaN == NaN); // false
alert(isNaN("blue")); // true
alert(isNaN("123"));  // false

~String类型:字符串是唯一没有固定大小的原始类型。字符串的字面量可以用单引号或者双引号声明。

6. 类型转换

  • 转换成字符串

3种主要的原始值Boolean、Number和String都有toString()方法,可以把它们的值转换成字符串。Boolean型的toString()方法只是输出true或者false;Number类型的toString()方法有两种模式:默认模式和基数模式,所谓基数模式是可以将数值转换为二进制、八进制和十六机制,例如:
 
 
 
  
var iNum = 10;
alert(iNum.toString(2)); // 1010
alert(iNum.toString(8)); // 12
alert(iNum.toString(16)); // A




  • 转换成数字

ECMAScript提供了两种把非数字的原始值转换成数字的方法,即parseInt()和parseFloat(),这两个方法只对String类型生效,其他类型返回都是NaN,例如:
 
 
 
  
alert(parseInt("1234blue"));  // 1234
alert(parseInt("0xA"));  // 10
alert(parseInt("22.5"));  // 22
alert(parseInt("blue"));  // NaN
alert(parseFloat("1234blue"));  //1234.0
alert(parseFloat("0xA"));  // NaN
alert(parseFloat("22.34.5"));  // 22.34
alert(parseFloat("0908"));  // 908




7. 引用类型

  • Object类:ECMAScript中的所有类都由这个类继承而来。
  • Boolean类:Boolean类是Boolean原始类型的引用类型。(注意:开发时最好使用Boolean原始值)
  • Number类:Number类是Number原始类型的引用类型。(注意:只要可能,都使用数字的原始表示法)
  • String类:String类具有length属性,它代表字符串中的字符个数;String类拥有大量的方法,可以查阅http://www.w3cschool.cn/提供的JavaScript帮助手册。


8. 运算符

~一元运算符

delete: 删除对以前定义的对象属性或方法的引用

void: 对任何值都返回undefined, 用于避免输出不应该输出的值

++/--: 自增/自减运算

+/-: 正/负号运算

~逻辑运算符

! && ||

~算术运算符

+ - * / %

~关系运算符

> < >= <= == != ===

~条件运算符

? :

~赋值运算符

= += -= *= /= %= 

~位运算符

>> << >>> ~ & | ^



9. 语句


(不解释)


  • if...else
  • do...while
  • while
  • for
  • for-in
  • break / continue
  • with
  • switch...case...default




 10. 函数

函数是一组可以随时随地运行的语句,是ECMAScript的核心。与Java或者C#等语言不同,函数在JavaScript是一等公民,其地位相当于Java中的类(JavaScript中的对象是通过函数创建的)。声明函数的关键字是function,由于是弱类型语言,函数没有返回类型,参数也不需要指定返回类型。

ECMAScript中的函数不能重载。可以用相同的名字在同一个作用域中定义两个函数不会引发错误,但是真正使用的是后一个函数。函数中有一个特殊对象arguments,这使得开发者不需要指定参数名就可以访问函数的参数。

在ECMAScript中,函数实际上是功能完整的对象。用Function类可以表示开发者定义的任何函数。可以用Function类直接创建函数,如下所示:


var sayHi = new Function("name", "alert('Hello, ' + name)"); sayHi("LUO Hao"); // Hello, LUO Hao
注意:尽管可以用Function构造函数创建函数,但是最好不要使用它,因此它定义函数比用传统的方式要慢得多。但是需要注意所有的函数其实都是Function类的实例。


还有一个和函数相关的概念叫“闭包”,这个在后面的章节中讲解。


标签:02,函数,JavaScript,Number,alert,运算符,ECMAScript,类型
From: https://blog.51cto.com/u_16166070/6522558

相关文章