js基础语法

js的声明学习:

1、行内JS 
	写在html标签中的js代码
2、内部JS
	写在<script type="text/javascript"></script>标签之间
	可以放在html中的任意位置,一般放在<head>标签中或<body>标签中或<body>标签后
3、外部JS
	引入外部的js文件
	<script type="text/javascript" src="js文件的路径" ></script>
	注:如果<script>标签中设置了src属性,name写在<script>双标签中的js代码无效

js的变量:

1、变量的声明
JavaScript是一种弱类型语言,声明时不需要指定数据类型,直接通过var修饰符声明
1、先声明再赋值
2、声明并赋值

注:如果声明变量时不使用var修饰符,则该变量是全局变量
2、变量的注意点
1)若只声明而没有赋值,则该变量的值为 undefined
2)变量要有定义才能使用,若变量未声明就使用,JavaScript 会报错,告诉你变量未定义
3)可以在同一条 var 命令中声明多个变量。
4)若使用 var 重新声明一个已经存在的变量,是无效的。
5)若使用 var 重新声明一个已经存在的变量且赋值,则会覆盖掉前面的值
6)JavaScript 是一种动态类型、弱类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值

3、变量提升
JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升

4、js中的数据类型

JavaScript 中有 6 种数据类型,其中有五种简单的数据类型:
			Undefined、Null、布尔、 数值和字符串。一种复杂数据类型 Object。
			数 值(Number): 整数和小数(比如 1 和 3.14)
			字符串(String): 字符组成的文本(比如"Hello World")
			布尔值(Boolean):true(真)和 false(假)两个特定值
			Undefined: 表示“未定义”或不存在,即此处目前没有任何值
			Null: 表示空缺,即此处应该有一个值,但目前为空
			对象(object)(引用) : 各种值组成的集合
			 1)、对象(object){name:”zhangsan”,age:”18”}
			 2)、数组(array)[1,2,3]
			 3)、函数(function)function test() {}
			 
			 
	typeof 操作符
			typeof 操作符是用来检测数据类型。
			
		说明:
			1、typeof null 返回的是 object 字符串
			2、函数不是数据类型,但是也可以使用 typeof 操作符返回字符串。
			typeof 操作符可以操作变量也可以操作字面量。
			注意:函数在 JavaScript 中是对象,不是数据类型,所以使用 typeof 区分 function 和object 是有必要的
			
	undefined
		undefined 类型的值是 undefined。
		undefined 是一个表示"无"的原始值,表示值不存在。
		出现 undefined 的常见情况:
		1)当声明了一个变量而没有初始化时,这个变量的值就是 undefined
		2)当函数需要形参,但未传递实参时
		3)函数没有返回值,但定义了变量接收
		
		
	null
		null 类型是只有一个值的数据类型,即特殊的值 null。它表示空值,即该处的值现在为空,
		它表示一个空对象引用。
		使用 Null 类型值时注意以下几点:
		1)使用 typeof 操作符测试 null 返回 object 字符串。
		2)undefined 派生自 null,所以等值比较返回值是 true。所以,未初始化的变量和赋值为 null 的变量相等

	
	数值型
		数值型包含两种数值:整型和浮点型。
		1)所有数字(整型和浮点型)都是以 64 位浮点数形式储存。所以,JS 中 1 与 1.0 相等,
			而且 1 加上 1.0 得到的还是一个整数。浮点数最高精度是 17 位小数,由于浮点数运算时可能不精确,尽量不要使用浮点数做判断。
		2)在存储数值型数据时自动将可以转换为整型的浮点数值转为整型。
		3)对于过大或过小的数值,可以使用科学计数法来表示
		4)Infinity、-Infinity
			超过了表数范围,出现 Infinity(正无穷)或者-Infinity(负无穷)
			isFinite()函数可以确定是否超出范围:
			true:没有超出;false:超出了
		NaN
			表示非数值(Not a Number),是一个特殊的值。
			如:将字符串解析成数字出错的场合。
			console.log(parseInt("abc"));//parseInt 方法将字符串解析为数值,但若无法解析,返回 NaN
			注意:
				NaN 不等于任何值,包括它本身,因为它不是一个值
				NaN 与任何数(包括它自己)的运算,得到的都是 NaN
				
				isNaN()可以用来判断一个值是否为 NaN
				true:不是数字;false:是数字
				
		字符串
			使用 ' ' 或 " "引起来,如:'sxt',"good"。
			使用加号’+’进行字符串的拼接,如:console.log('hello' + ' everybody');
			
		
		对象
			instanceof 运算符
				typeof 操作符对数组(array)和对象(object)的显示结果都是 object,那么可以利用
				instanceof 运算符,它可用于判断一个变量是否某个对象的实例

js的运算符:

1、算术运算符
加法:+
减法:-
乘法:*
除法:/
余数:%
number类型和number类型
number类型和boolean类型(true–>1,false–>0)
number类型和数字的String类型(*,/,%,-)
数字的string类型和数字的string类型( * ,/,%,-)
数字的string类型和boolean类型( *,/,%,-)
在算数运算中,如果两边的数据类型不是number的话,会使用Number()强转后再进行运算
注意:
在字符串“+”加号代表的是字符串的连接符,不会参与运算
2、逻辑运算符
!,&,&&,|,|| (和java中的用法一致)
但是需要注意:
var a = true;
var b = false;
alert(a|b); //1
alert(a||b); //true
alert(a&b); //0
alert(a&&b); //false

3、关系运算符
!=、>=、<=、>、<、==、 ===

4、自增自减以及加减运算符
++ – += -=

5、js的关系运算符==,===
等值运算符:==
(基础类型,不含object:)
1、先判断类型,类型一致则直接进行比较
2、类型不一致,则使用Number()进行强转后再进行比较

等同运算符:===
1、先判断类型,类型一致则再判断内容,内容一致则返回true
2、类型不一致,则fasle

注意:null和undefined在做==判断时,返回true

另:
var str = new String(‘123’);
var str2 = new String(“123”);
alert(str==str2); //true 基础类型和object比,会调用toString()方法去比内容
alert(str ===str2); //false object类型和object类型比,比的是对象的地址

数据类型:

JavaScript中有6种数据类型,其中有5种简单的数据类型:
说明:
1、typeof操作符
是用来检测数据类型的
说明:
1)、typeof null返回的是object字符串
2)、函数不是数据类型,但是可以使用typeof操作符返回字符串
typeof操作符可以操作变量也可以操作字面量
注意:函数在javascript中是对象,不是数据类型,所以使用typeof区分function和object是有必要的
2、undefined
undefined类型的值是undefined
undefined是一个表示“无”的原始值,表示值不存在
出现undefined的常见情况:
1)、当声明一个变量而没有初始化时,这个变量的值就是undefined
2)、当函数需要形参时,但为传参时
3)、函数没有返回值,但定义了变量接收

3、null
null类型是只有一个值的数据类型,即特殊的值null,它表示空值,即该处的值为空
它表示一个空对象引用
使用null类型值时注意以下几点:
1)、使用typeof操作符测试null,返回object字符串
2)、undefiend派生自nul,所以等值比较返回值是true。所以,未初始化的变量和赋值为null的变量相等

4、数值型
数值型包括两种类型:整型和浮点型
1)、所有数字(整型和浮点型)都是以64位浮点数形式存储的。所以js中1.0和1相等
2)、在储存数值类型时自动将可以转换为整型的浮点数值转为整型
3)、对于过大或过小的数值,可以试用科学计数法来表示
4)、Infinity、-Infinity
超过了表数范围,出现Infinity(正无穷)或者-Infinity(负无穷)
isFinity()函数可以确定是否超出范围
true:没有超出;false:超出了

5、NaN:
表示非数值(not a number),是一个特殊的值
如:将字符串解析成数字出错的场合
console.log(parseInt(“abc”)); //parseInt方法将字符串解析为数值,但若无法解析,返回NaN
注意:
NaN不等于任何值,包括它本身,因为他不是一个值
NaN于任何数(包括他自己)的运算都是NaN

isNaN()可以用来判断一个值是否为NaN
true:不是数字;false:是数字

6、字符串
使用’ '或者" "引起来,如:‘sxt’,“good”
使用加号+进行字符串的拼接,如:console.log(‘hello’+‘everybody’);

7、对象
instanceof运算符
typeof 操作符对数组(array)和对象(object)的显示结果都是object,那么可以利用instanceof运算符,它可用于判断一个变量是否是某个对象的实例

类型转换:

1、自动类型转换
2、函数转换
parseInt()
1)、parseInt()在转换之前,首先分析该字符串,判断位置为0处的字符,判断它是否是一个有效数字,如果不是,则直接返回NaN,不再继续,如果是则继续,直到找到字符
2)、parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二参数指定的
3)、如果十进制数包括前导0,那么最好采用基数10,这样才不会意外的得到八进制的值
parseFloat()
parseFloat()方法与parseInt()方法的处理方式相似,但是parseInt()可以识别第一个小数点
3、显示转换
toString()函数将内容转换为字符串形式,其中Number提供的
toString()函数可以将数字以指定的进制转换成为字符串,默认十进制
Number还提供了toFixed()函数将根据小数点后指定位数将数字转为字符串,四舍五入

4、强制转换
js为Number、Boolean、String对象提供了构造方法,用于强制转换成其他类型的数据
此时操作的是整个数据,而不是部分

数组:

1、数组的特点:
1)、数组的长度是可变的
2)、数组的类型可以不一样
3)、不存在下标越界

2、数组的定义
1)、隐式创建
var 变量名 = [值1,值2,。。。];
2)、直接实例化
var 变量名 = new Array(值1,值2,。。。);
3)、实例化并指定长度
var 变量名 = new Array(size);

获取数组的长度
数组.length

3、数组的遍历
数组的遍历即依次访问数组的每一个元素,js提供三种遍历数组的方式:
1)、普通for循环遍历:
for(var i =0;i<数组名.length;i++){
}
注:可以拿到undefined的值,无法获取数组中属性对应的值
2)、for…in
for(var i in 数组){
//i是下标或属性名
}
注:无法拿到undefined的值,可以获取数组中属性对应的值
3)、foreach
数组.foreach(function(element,index){
//element:元素;index:下标
});
注:无法获取属性对应的值与undefined的值

*for—不遍历属性
*foreach—不遍历属性和索引中的undefined
*for…in—不遍历索引中的undefined

4、数组提供的方法
1)、数组的合并:var d=arr.concat(b,c,c); //合并arr数组,b数组,c变量
2)、数组指定间隔符转换字符串:var b=arr.join("-"); 返回的是字符串
3)、数组移除最后一个元素并返回移除的元素的值:var ele=arr.pop();
4)、数组移除第一个元素并返回移除的元素的值:
var ele=arr.shift();
alert(ele);
5)、向数组中添加/删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,…,itemX)
例如:
var arr2=arr.splice(1,3);
alert(arr2); //返回值是被删除的数组abc,张三,12
alert(arr); //1
6)、数组的追加(末尾位置):返回新的长度,追加的元素可以是一个数组,但是作为一个角标值存在
var ln=arr.push(“lol”);
var ln2=arr.push([“66”,77]);
7)、数组在开始位置插入指定元素:返回新的长度
var a=arr.unshift(“又是周五了”);
alert(a);
8)、数组的反转:reverse方法将数组的元素位置进行反转
9)、其余的看文档

js的函数:

函数,即方法。函数也是对象
1、函数的定义
定义方式有3种;
1)、函数声明语句
function 函数名([形参]){
}
调用:函数名([实参]);
2)、函数定义表达式
var 变量名/函数名=function([形参]){
}
调用:变量名([实参])/函数名([实参]);
3)、Function构造函数
var 函数名 = new Function(‘参数1’,‘参数2’,‘参数的主体内容’);
调用:函数名([实参]);
注:构造函数的最后一个参数是函数体

注意:
1、js中的函数没有重载,同名的函数,会被后面的函数覆盖
2、js中允许有不定数目的参数,后面介绍arguments对象

函数的提升(了解)
JavaScript引擎将函数名视为变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码的头部。所以,下面代码不会报错
但是,如果采用赋值语句定义函数,JS就会报错。

2、函数的参数
函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数,定义时的参数称为形参,调用时的参数称为实参
1)、实参可以省略,那么对应的形参为undefiend
2)、若函数形参同名(一般不会这么干):在使用时,以最后一个值为准
3)、可以给参数默认值:当参数为特殊值时,可以赋予默认值
4)、参数为值传递,传递副本;引用传递时传递地址,操作的是同一个对象

3、函数的调用
1)、常用调用方式:函数名([实参]);
存在返回值可以变量接收,若接收无返回值函数则undefiend
2)、函数调用模式
3)、方法调用模式
4)、call()和apply()

注:谁调用函数,this就指向谁

4、匿名函数立即调用
1)、匿名函数:function([参数]){}
2)、调用:(function([形参]){})([实参]);
在函数只被使用一次的情况下就可以使用这种方式,简便省事

5、return语句
函数的执行可能会有返回值,需要使用return语句将结果返回。return语句不是必需的。
如果没有的话,该函数就不返回任何值,或者说返回undefiend
作用:在没有返回值的方法中,用来结束方法。
有返回值的方法中,一个是用来结束方法,一个是将值带给调用者

arguments对象和函数的方法及属性

arguments对象可以得到函数的实参数量
函数名.name 得到函数名称
函数名.length 得到函数的形参数量
函数名.toString() 得到函数的源码

函数的作用域

函数的作用域:全局(global variable)和局部(local variable)
1)、全局变量与局部变量同名问题 —>就近原则
2)、在函数中定义变量时,若没有加var关键字,使用之后自动变为全局变量

闭包:

1、闭包的形成:
1)、外部函数内部嵌套内部函数
2)、内部函数中使用外部函数的环境
3)、外部函数返回内部函数
2、闭包的作用:
1)、获取函数内部的变量
2)、保存变量的值在内存中
3)、避免变量名重复

内置对象:

Date:
//获取
getFullYear()年,getMonth()月,getDate()日,getHours()时,getMinutes()分,getSeconds()秒
//设置
setYear(),ssetMonth(),…
toLocaleString()
说明:
1、getMonth():
得到的值:0~11
2、setMonth():
设置值时0~11
3、toLocaleString():可根据本地时间把Date对象转换成字符串,并返回结果

·js对象

js中一切数据皆对象。

1、定义对象
	 JS创建自定义对象,主要通过三种方式:
	 		1)、字面量形式创建对象
	 				var 变量名 = {};	//空对象
	 				var 变量名 = {键:值,...};
	 		2)、通过new Object对象创建
	 				var 变量名 =new Object();
	 		3)、通过Object对象的create方法创建对象;
	 				var 变量名 = Object.create(null或对象);
2、对象的序列化和反序列化
	 序列化:将对象序列化为字符串
	 反序列化 :将字符串反序列化为js对象

	js中通过调用JSON方法,可以讲对象序列化成为字符串,也可以将字符串反序列化成对象。
		序列化对象:
			JSON.stringify(object)
		反序列化Json字符串:
			JSON.parse(jsonStr)
3、eval()
	1)、可借助eval()动态函数,将参数字符串解析成js代码来执行,只接受原始字符串作为参数
		eval("console.log('你好')"); 		//控制台输出你好
	2)、可将json字符串转为json对象
			1))、第一种解析方式:得到的json对象名就是jsonObj
			2))、第二种解析方式:							  		
		var jsonObj = eval("("+jsonStr+")");
		由于json是以{ }的方式开始以及结束的,在eval中会被当成一个语句处理。故必须强制将它转换成一种表达式。加上圆括号是使eval函数处理时强制将括号内的表达式转化为对象而不作为语句来执行。
			3))、第二种解析方式;对象只有一个属性
			eval(jsonStr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值