语法
区分大小写
`JavaScript`中的变量、函数名都是区分大小写的,`name`,`Name`,`NAME`,不是同一个变量
标识符
标识符就是变量、函数、属性的名字或者函数的参数
注释
注释就是不被计作程序语句,专门用来给程序员自己看的内容
//单行注释
/*
* 多行注释
*
*/
变量
变量就是一个用来存储数据的,声明变量用`var`
//声明一个变量,名字叫name
var name;
如果要定义多个变量,有两种方式可以定义:
//方式一:分开定义
var name;
var age;
var sex;
//方式二:统一定义
var name,age,sex;
给变量赋值
//变量可以在声明的时候赋值
var name = 'John';
//也可以声明以后再赋值
var name;
name = 'John'; //这里的变量值也可以是"John",单引号和双引号都表示字符串
//赋值以后可以修改变量的值
// 方法一
var name = 'John';
name = 'Tome';
console.log(name);//Tome
//方法二
var name;
name = 'John';
name = 'Tome';
console.log(name)//Tome
变量的作用域
function demo(){
var name = 'John';
}
demo();//调用函数--在函数名后面加括号`()`表示执行该函数
console.log(name);//错误
在上面这段代码中,在函数内部定义了一个局部变量,局部变量在函数运行结束以后就会被销毁,此时在函数外面调用name
变量的时候,name
这个变量并不存在
function demo(){
name = 'John';//全局变量
}
demo();
console.log(name); //John
上面这段代码中在函数内声明了一个变量,但是并没有用var
声明,此时当函数运行过后,name
就是一个全局变量,那么函数运行结束以后,这个变量并没有被销毁,所以在函数体外部依然可以找到name
这个变量
前文中提到的全局变量、局部变量、函数体等知识点虽然没有学过,但是可以提前理解一下,后面会做详细介绍
另外,虽然省略var
操作符可以定义全局变量,但是不推荐这样做,因为在局部中定义全局变量难以维护
数据类型
在javaScript中有5种数据类型(基本数据类型):Undefined
,Null
,Boolean
,Number
,String
。Object
也是一种数据类型,但是是复杂数据类型,Object
本质上是由一对健值对组成。
typeof操作符
typeof
用来检测数据类型,返回的结果有:
-
"undefined"
---未定义 -
"boolean"
---布尔类型 -
"string"
---字符串 -
"number"
---数字类型 -
"object"
---对象或者是null
- function`---函数类型的数据
typeof null
会返回object
,这是因为特殊值null
被认为是一个空对象
// undefined
var name;
console.log(typeof name); //var定义,结果是string,let定义是undefined
// let,ECMAScript6中定义数据的关键字
// boolean
var flag = true;
console.log(typeof flag); //boolean
// string
var name = 'Json';
console.log(typeof name); //string
// object
var obj = {
'name': 'Json',
'age': 20
};
console.log(typeof obj); //object
// function
function add(a,b) {
return a + b;
}
console.log(typeof add);//function
Undefined类型
Undefined
只有一个值,即undefined
。对于声明了但是没有初始化的变量,其值就是一个undefined
。
var name;
console.log(name == undefined);// true
// 这个例子类似于
var name = undefined;
console(name == undefined);// true
Null类型
Null
类型是一个只有一个值的数据类型,这个值是null
。
var person = null;
console.log(typeof person);// object
这里给person
赋值为null
,表示person是一个空指针的变量,将来指向一个对象。
所以如果要定义一个变量,将来用于保存对象,那么赋初始值的时候要赋值为null
。比如下面这个例子:
var person = null;
if(person == null){
person = {
"name":"Jerry",
"age":20
}
}
Boolean类型
Boolean
有两个字面值:true
和false
。
var flag = true;
var isSuccess = false;
- 布尔类型的数据类型转换
在JavaScript
中,可以将所有的数据类型的值转换为布尔类型的值。转换方法如下:
var name = 'Json';
var nameBoolean = Boolean(name);
console.log(nameBoolean);//true
转换规则:
-
String
类型,非空为true
,空为false
-
Number
类型,非0为true
,0和NaN
为false
-
Object
类型,任何对象为true
,null
为false
比如我们可以用字符串的非空作为判断的条件:
var message = "Please send me latter";
if(message){
send(message);
}
function send(mes){
console.log("发送消息---消息内容为"+mes);
}
Number类型
关于Number
类型的数据,我们不去研究八进制、十六进制,这些类型的数据会给我们的学习带来不小的负担,另外数值的范围我们也不去研究。
数值转换
关于数值转换,需要学习三个函数:Number()
,parseInt()
,parseFloat()
。
-
Number()
:用于将任何数据类型转换为数值类型的数据; -
parseInt()
:将字符串类型的数字转换为int
类型的数据; -
parseFloat
:将字符串类型的数据转换为float
类型的数据。
-
Number()
:- 如果是
Boolean
类型的数据,true
被转换为1,false
被转换为0; - 如果是数字,只是简单的传入和返回;
- 如果是
null
,返回0; - 如果是
undefined
返回的是NaN
-
如果是字符串
- 如果是
'123'
,返回123
,如果是'0123'
返回的是123
; - 如果是十六进制的数据,则会返回对应的十进制的值;
- 如果是空字符串,则返回0
- 如果是
- 如果是
var number1 = Number('John');//NaN
var number2 = Number('');//0
var number3 = Number('090');//90
var number4 = Number(true);//1
var number5 = Number(false);//0
var number8 = 12+'number';//NaN
-
parseInt()
:var number = parseInt('070');//56
前面的Number()
则是将'070'
转换成了70
,而parseInt()
则是将070
转换成了56
,这是因为parseInt()
函数将'070'
当作是八进制的一个数值进行转换
为了消除这种困惑,在parseInt()
函数中还有另一个参数作为补充,第二个参数可以指定被转换值按照什么类型的值去转换:
var num1 = parseInt("10", 2);//2 (按二进制解析)
var num2 = parseInt("10", 8);//8 (按八进制解析)
var num3 = parseInt("10", 10);//10(按十进制解析)
var num4 = parseInt("10", 16);//16(按十六进制解析)
-
parseFloat()
与parseInt()
类似,是从第一个字符开始解析,解析到字符串末尾或者遇到第二个小数点为止,比如’12.34.32’
解析的结果就是12.34
。
下面的例子中,标记有(了解)的可以不做重点关注:
var num1 = parseFloat("1234blue");//1234 (整数)
var num2 = parseFloat("0xA"); //0 (了解)
var num3 = parseFloat("22.5");//22.5
var num4 = parseFloat("22.34.5");//22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000 (了解)
String类型
String
类型的数据,简单来说,就是由双引号("")和单引号('')包裹起来的都是String
类型的数据。
在这里,单引号和双引号都可以用来表示字符串,要注意一点,引号要对称:
String name = 'Jhon";//前后引号不一致,错误
字符串的拼接
String name = 'Tom';
String subString = 'name:'+ name;
// 如果是数字类型的数据和字符串拼接,那么会默认将数字转换成字符串,然后拼接
String stringNumber = 1 + 'string';
字符串转换
-
toString()
方法
toString()
默认是以十进制的方式去转换的,但是我们可以通过添加参数来规定转换的方式
var num = 10;
console.log(num.toString());// "10"--十进制
console.log(num.toString(2));// "1010"---二进制
console.log(num.toString(8));// "12"---八进制
console.log(num.toString(10));// "10"---十进制
console.log(num.toString(16));// "a"---十六进制
-
String()
方法
String()
方法的转换规则与toString()
方法基本类似,这是因为它的转换规则:
- 如果被转换的值有
toString()
方法,就调用toString()
方法; - 如果被转换值是
null
,返回null
; - 如果被转换值是
undefined
,返回undefined
。
var value1 = 30;
var value2 = null;
var value3 = undefined;
console.log(String(value1));//"30"
console.log(String(value2));//"null"
console.log(String(value3));//"undefined"
Object类型
Object
类型的数据其实就是一对健值对,健值对就是一个属性对应一个值,对象的创建方式可以有两种,一种是用关键字new
创建,一种是用花括号创建:
第一种
var obj = new Object();//创建一个对象
// 给对象添加属性和值
obj.name = 'Tom';
obj.age = 20;
// 取对象中的值
console.log(obj.name);// 'Tom'
console.log(obj.age);// 20
第二种
var obj = {
"name": "Tom",
"age": 20
}
// 这里是两种取值方式
console.log(obj.name); //'Tom'
console.log(obj.age); //20
console.log(obj['name']); //'Tom'
console.log(obj['age']); //20
-
下面的这些知识点可以作为了解,后面会细讲
Object
的每个实例都具有下列属性和方法:-
constructor
:保存着用于创建当前对象的函数。构造函数(constructor
) 就是Object()
; -
hasOwnProperty(propertyName)
:检查给定的属性在当前对象实例中(而不是在实例 的原型中)是否存在。其中,作为参数的属性名(propertyName
)必须以字符串形式指定(例 如:o.hasOwnProperty("name")
); -
isPrototypeOf(object)
:用于检查传入的对象是否是传入对象的原型; -
propertyIsEnumerable(propertyName)
:用于检查给定的属性是否能够使用for-in
语句来枚举。与hasOwnProperty()
方法一样,作为参数的属性名必须以字符串形式指定; -
toLocaleString()
:返回对象的字符串表示,该字符串与执行环境的地区对应; -
toString()
:返回对象的字符串表示; -
valueOf()
:返回对象的字符串、数值或布尔值表示。通常与toString()
方法的返回值相同。
-
参考文献:
《JavaScript高级程序设计》
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。