`JavaScript`中的变量、函数名都是区分大小写的,`name`,`Name`,`NAME`,不是同一个变量
标识符就是变量、函数、属性的名字或者函数的参数
注释就是不被计做程序语句,专门用来给程序员本身看的内容 //单行注释 /* * 多行注释 * */
变量就是一个用来存储数据的,声明变量用`var`
//声明一个变量,名字叫name var name;
若是要定义多个变量,有两种方式能够定义:java
//方式一:分开定义 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
用来检测数据类型,返回的结果有:设计
"undefined"
---未定义"boolean"
---布尔类型"string"
---字符串"number"
---数字类型"object"
---对象或者是null
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
。指针
var name; console.log(name == undefined);// true // 这个例子相似于 var name = undefined; console(name == undefined);// true
Null
类型是一个只有一个值的数据类型,这个值是null
。code
var person = null; console.log(typeof person);// object
这里给person
赋值为null
,表示person是一个空指针的变量,未来指向一个对象。
因此若是要定义一个变量,未来用于保存对象,那么赋初始值的时候要赋值为null
。好比下面这个例子:对象
var person = null; if(person == null){ person = { "name":"Jerry", "age":20 } }
Boolean
有两个字面值:true
和false
。ip
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()
,parseInt()
,parseFloat()
。
Number()
:用于将任何数据类型转换为数值类型的数据;parseInt()
:将字符串类型的数字转换为int
类型的数据;parseFloat
:将字符串类型的数据转换为float
类型的数据。Number()
:
Boolean
类型的数据,true
被转换为1,false
被转换为0;null
,返回0;undefined
返回的是NaN
若是是字符串
'123'
,返回123
,若是是'0123'
返回的是123
;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 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
类型的数据其实就是一对健值对,健值对就是一个属性对应一个值,对象的建立方式能够有两种,一种是用关键字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高级程序设计》