一、语法
1、区分大小写
ECMAScript中的一切(变量、函数名、操作符)都区分大小写。
2、标识符
定义:就是指变量、函数、属性的名字,或者函数的参数
书写规范:驼峰命名法:
validCode
doSomethingImportant
3、注释
//单行注释
/*
多行注释
*/
4、严格模式
严格模式中,js中的一些不确定行为将会得到处理,对于一些不安全的操作也会抛出错误。
"use strict";
5、语句
ECMAScript中的语句已一个分号(;)结尾,虽然可以省略,但建议不要省略。
多个语句可以放到{ }中
二、关键字和保留字
定义:具有特殊用途和操作的关键字,不可用作标识符。例如:
do if break else new……
三、变量
ECMAScript中的变量是松散类型的,即可以保存任何数据类型。 用 var 关键字定义。后跟变量名。
var a = "message";
定义多个变量:
var message = "hi",
found = false,
age = 23;
注意:
var 操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁
四、数据类型
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1 种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述 6 种数据类型之一
1、typeof
作用:用于检测给定变量的数据类型,返回字符串
"undefined"——如果这个值未定义;
"boolean"——如果这个值是布尔值;
"string"——如果这个值是字符串;
"number"——如果这个值是数值;
"object"——如果这个值是对象或 null;
"function"——如果这个值是函数。
2、Undefined类型
Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined
var message;
console.log(message === undefined); //true
console.log(message); //"undefined"
console.log(age); //产生错误
console.log(typeof message); //"undefined"
console.log(typeof age); //"undefined"
3、Null类型
Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看, null 值表示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值。这样一来,只要直接检查 null 值就可以知道相应的变量是否已经保存了一个对象的引用。
实际上, undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true:
console.log(null == undefined) //true
4、Boolean类型
Boolean 类型是 ECMAScript 中使用得最多的一种类型,该类型只有两个字面值: true 和 false
要将一个值转换为其对应的 Boolean 值,可以调用转型函数 Boolean(),例如
console.log(Boolean("message")); //true
各种数据类型及其对应的转换规则。
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a(not application,即不适用) | undefined |
这些转换规则对理解流控制语句(如 if 语句)自动执行相应的 Boolean 转换非常重要,下列代码在if()z中会自动执行Boolean()方法进行转换
var message = "Hello world!";
if (message){
alert("Value is true");
}
5、Number类型
简单了解整形、浮点型
NaN
两个特点
- 任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN
- NaN 与任何值都不相等,包括 NaN 本身
isNaN()函数工作原理: isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或 Boolean 值。而任何不能被转换为数值的值都会导致这个函数返回 true
数值转换
有 3 个函数可以把非数值转换为数值: Number()、 parseInt()和 parseFloat()。第一个函数,即转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。
上述三个函数的功能具体看书
6、String类型:
- 了解转移字符
- 了解字符串的特点:ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变
-转换字符串:toString
7、Object类型
ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象
但关键是要理解一个重要的思想:即在 ECMAScript 中,(就像 Java 中的 java.lang.Object 对象一样) Object 类型是所有它的实例的基础。换句话说,Object 类型所具有的任何属性和方法也同样存在于更具体的对象中。
五、操作符
各种操作符的奇技淫巧参看红皮书
六、语句
- if
- while
- do-while
- for
- for-in
- label
- break & countinue
- with
-switch
七、函数
函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。 ECMAScript 中的函数使用 function 关键字来声明,后跟一组参数以及函数体。
注意
位于 return 语句之后的任何代码都永远不会执行
function sum(num1, num2) {
return num1 + num2;
alert("Hello world"); // 永远不会执行
}
1、理解参数
JS中参数的特点:不限制数量,不限制类型。是因为ECMAScript中的参数是用一个数组表示的。可通过arguments对象访问参数
其实, arguments 对象只是与数组类似(它并不是 Array 的实例),因为可以使用方括号语法访问它的每一个元素(即第一个元素是 arguments[0],第二个元素是 argumetns[1],以此类推),使用 length 属性来确定传递进来多少个参数。
2、没有重载
没有重载的含义就是:如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数
function addSomeNumber(num){
return num + 100;
}
function addSomeNumber(num){
return arguments[0] + 200;
}
var result = addSomeNumber(100);
console.log(result); //300
网友评论