基本概念

区分大小写


标识符


即变量、函数、属性的名字,或者函数的参数。


规则
  • 第一个字符必须是字母、下划线,或者美元符号
  • 替他可以包含数字

标识符中的字母可以包含扩展的ASCII或Unicode字母字符。


注释


// 单行注释


/*多行注释*/


严格模式


ECMAScript 5 引入了严格模式的概念。在严格模式下,ECMAScript3中的一些不确定行为将得到处理,而且对于某些不安全的操作也会抛出错误,执行严格模式,可以在顶部添加代码
"use strict"
在函数上方使用这行代码可以让指定函数在严格模式下执行
function doSomething() {
"use strict"
// to do ...
}

语句


ECMAScript 中的语句以一个分号结尾,但分号可省略


变量


ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。定义变量用 var 操作符,后跟变量名(未经过出事话的变量会保存一个特殊值--undefined)


可以在修改变量值得时候修改变量的类型.


如:
var message = "hi";
var message = 100;

如果变量前不用 var 修饰,则默认变量是全局变量


数据类型


ECMAScript中有5种简单数据类型(也成为基本数据类型):undefined、Null、Bollean、Number和String。还有一种复杂数据类型-object,object是由一组无序的名值对组成(蛮像字典(OC))。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6中数据类型之一。


typeof操作符


用于检测给定变量的数据类型


Undefined类型


Undefinded类型只有一个值,即特殊的undefined。


Null类型


Null类型是第二个只有一个值


只要意在保存对象的变量还没有真正保存对象,就应该明确的让改变量保存null值


Boolean类型


该类型有两个字面值:true和false。这两个值与数字值不是一回事,因此true一定不等一1,而false也一定不等于0,区分大小写。


Number类型


这种类型用IEEE754格式来表现整数和浮点值。为支持各种数值类型,ECMA-262定义了不同数值字面量格式。


进制
  • 十进制:var intNum = 55;
  • 八进制第一位必须是(零),然后是八进制数字序列(0-7),如果字面值超出了范围,那么前导零将被忽略,后面的数值将被当做十进制解析。八进制在严格模式下是无效的,会报错。
  • 十六进制的前两位必须是0X,后面跟十六进制数字(0-9和A-F,字母不分大小写)
  • 在进行算术计算时,所有八进制和十六进制的数值最终都将被转换成十进制数值。

浮点数值


  • 保存浮点数空间是整数的两倍,所以如果浮点数本身是一个整数,那么该值也会被转换为整数
  • 浮点数的最高精度是17位小数
  • 在进行算术计算时候,浮点数的精度,远远小于整数。

数值范围


  • 大多数浏览器范围是Number.MIN_VALUE(5e-324)至Number.MAX_VALUE(1.79769311348623157e+308)
  • 超出范围会被转换成(-)Infinity

NaN


NaN,即非数值(Not a Number)是一个特殊的数值,这个数值表示本来要返回操作数未返回操作数的情况(这样就不会出现错误了),任何数除以零会返回NaN


NaN本身有两个特点。首先,任何涉及NaN的操作都会返回NaN。其次,NaN与任何值都不相等,包括NaN本身。


isNaN()函数,返回值是boolean类型,帮助我们确定是不是“不是数值(NaN)”


数值转换


有3个函数可以把非数值转换为数值:Number(),parseInt()和parseFloat().第一个函数即转型函数Number()可以用于任何类型的数据,而另两个函数专门用于把字符串转换成数值。


String 类型


String类型用于表示由零或多个16位Unicode字符组成的字符序列。字符串可以由双引号或单引号表示。


  • 字符字面量:String数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其他用途的字符。
  • ECMAScript中的字符串是不可变得,也就是说,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。
  • 转换为字符串:要把一个值转换为字符串有两种方法,一,toString()。但是null和undefined值没有这个方法,在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String()。

Object类型


ECMAScript中的对象其实就是一组数据和功能的集合。

操作符


类似Java


相等和不等


操作符都会先转换操作数(通常称为“强制转型”),然后再比较他们的相等性。(null和undefined是相等的)


全等操作符(===),用于表示未经转换就相等的情况,如:


var result1 = ("55"==55); // true 因为转换后相等
var result2 = ("55"===55) // false 因为不同的数据类型不相等。

语句


if语句


if的condition(条件)可以是任意表达式;而且对这个表达式求值的结果不一定是布尔值。ECMAXcript会自动调用Boolean()转换函数将这个表达式的结果转换为一个布尔值。


for - in 语句


可以用来枚举对象的属性,语法:


for (property in expression) statement

label语句


使用label语句可以在代码中添加标签,以便将来使用,语法:


label:statement
实例:
start:for(var i = 0; i < count; i++) {
alert(i);
}

一般与for和break、continue一起使用,如:


outermost:
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if(i == 5 && j == 5) {
break outermost;
}
num++;
}
}
alert(num); //55

with语句


with语句的作用是将代码的作用域设置到一个特定的对象中。语法:


with (expression) statement;

定义with语句的目的主要是为了简化多次编写同一个对象的工作,如:


var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
转为with 代码
with(location) {
var qs = search.substring(1);
var hostname = hostname;
val url = href;
}

在严格模式下不允许使用with,否则将视为语法错误。


swtich语句


switch 语句可以使用任何数据类型。case的值可以是常量、变量,表达式。


函数


用function声明


函数在定义是不指定是否返回值,函数任何时候都可以通过return语句后跟要返回的值来实现返回值。


理解参数


ECMAScript函数的参数和大多数语言的函数参数有所不同。他不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数。在调用这个函数时也未必一定要传递两个参数。可以是一个、三个,甚至不传递参数。这样的原因是ECMAScript中的参数在内部是一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。


没有重载


如果定义了两个名字相同的函数,则名字属于后定义的函数。

你可能感兴趣的:(基本概念)