1.语法
这一部分与其他语言差别不大 例如 c++ java
-
区分大小写:变量名中大小写严格区分 test 与 Test 是两个不同的变量
var test, Test; //两者是完全不同的两个变量
-
标识符 第一个字符必须是字母或 _ 或 $;其他字符可以是字母,下划线,美元符号,或者数字,遵循驼峰命名
-
注释
// var s = "test" /* var s = "test" */ 两种注释方法都是可以的,只不过第一种是单行注释 ,第二种是多行注释
-
严格模式 使用 ‘use strict’ 使用这种模式,代码会在严格模式下运行,减少错误
-
语句 JavaScript 语句结尾的 ; 不是必须的,但还是建议将其添加上,一是方便自己他人阅读,二来也是防止出现一些捉摸不透的错误
2.变量
JavaScript变量是松散类型,也就是一个变量可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值得占位符而已
// JavaScript 支持直接初始化变量,因此在定义变量的同时就可以设置变量的值
var test = "test"
// 如果在声明变量之后不给变量赋值,那么变量的初始值就是 undefined
var name;
console.log(name) //undefind
// 有一点需要注意的是,使用var 定义的变量将成为给定义该变量的作用域的局部函数。
// 也就是说如果在函数中定义一个变量,那么在函数执行完成退出之后,该变量也会被销毁
function fn () {
var fnTest = 'test';
}
fn();
console.log(fnTest)// 报错
//在上面的例子中如果不适用var 来声明变量,那么该变量将会成为一个全局变量,那么即使在函数退出之后,变量也不会被销毁
3.数据类型
在 JavaScript中有五种基本数据类型(在es6中新增一种 symbol)分别是 Undefined Null String Number Boolean 还有一种复杂数据类型 Object
3.1 typeof操作符
因为JavaScript的变量类型是松散的,所以需要有一种手段来检测给定变量的数据类型 typeof就是用来检测数据类型的操作符
-
Undefined => undefined
-
Number => number
-
String => string
-
Boolean => boolean
-
Object | Null => Object
-
Function => function
值得注意的是 基本数据类型中的Null 与 Object 都会被typeof 判断为 object类型
3.2 Undefined
如果一个变量只声明,并未赋值,则是undefined
3.3 Null
如果一个变量时用来存储object 那么最好将其初始化为null
3.4 Boolean
与c++中的 bool 并没有什么很大区别
只需要记住 true 不一定是1 false 不一定是0
3.5 Number
##### 3.5.1 **字面量格式**
为支持各种数据类型,js定义了不同的数值字面量格式
var intNum = 55; //整数
var octNum = 070 //八进制的56
var hexNum = 0xA //十六进制的10
//在进行算术运算是,所有的八进制与十六进制都会被转换为十进制数值
var res = octNum + hexNum // 66
3.5.2 NaN
表示一个特殊的数值(not a number),用来表示一个本来要返回数值的操作数未返回数值的情况
3.5.3 tip
//在js引擎中 0.1 + 0.2 = 3.0000000004 != 0.3
// 所以在es6中引入一个EpsiLon 标准 只要0.1 + 0.2 -0.3 小于该标准即可认定为0.1+0.2 = 0.3
0.1+0.2-0.3 < Number.EPSILON // true
3.6 String
// 在JavaScript中 字符串一旦创建,值不能修改,不能销毁
var s = "abc";
s[0] = "d";
console.log(s); // "abc"
//单独对其某一项进行修改无效 除非重建
s = "dbc";
console.log(s); //"dbc"
除null undefined 外都有toString方法,对于不清楚变量类型的变量可以使用String方法
1.如果值由toString 则调用该值的toString方法
2.如果是null 则返回"null"
3.如果是undefined 则返回 "undefined"
3.7 Object
对于object类型,只介绍一些基本属性方法
1. Constructor: 保存用于创建对象的函数
2. hasOwnProperty(propertyName):检查给定属性是否是存在与当前对象实例中,而不是实例原型中;
3. isPrototypeof(Object): 检查传入的对象是否存在于另一个对象的原型链上
4. toString: 返回对象的字符串表示
5. valueOf: 通常与toString 相同
4 函数
4.1 参数
在JavaScript中不介意传进多少参数。
在函数体中可以使用arguments对象来对传进的参数进行访问,使用length 来确定究竟传进了多少参数
特别注意,在JavaScript中arguments的长度是由实际传进的参数的个数决定,不是由函数定义时,命名参数的个数决定
修改arguments对象中的数据,对应的命名参数的值也会修改
4.2 没有重载
因为JavaScript是松散语言,所以不存在根据变量类型不同来重载函数,但是我们可以根据函数参数传入参数类型和数量做出不同反应
5 总结一下
5.1 基本数据类型与复杂类型
undefined null string number boolean Object
5.2 函数参数
没有函数签名的概念,可以传任意多的参数,不能重载