JavaScript~语法.关键字和保留字.变量.数据类型.操作符.语句.函数

JavaScript简介

JavaScript诞生于1995年,当时的主要目的是处理由服务器端语言负责的一些输入验证操作。现在,JS能够处理
复杂的计算和交互,拥有了闭包,匿名函数(拉姆达表达式),元编程等特性。
JavaScript实现由以下三个部分组成:
								1.核心(ECMAScript)
								2.文档对象模型(DOM)
								3.浏览器对象模型(BOM)
 核心部分也就是ECMAScript规定了JS的这些组成部分:语法;类型;语句;关键字;保留字;操作符;对象。
 文档对象模型也就是DOM作用是把整个页面映射为一个多层节点结构,通过DOM创建的这个表示文档的树形图,我
 们就获得了控制页面内容和结构的主动权,借助DOM提供的API,我们可以轻松地删除,添加,替换或修改节点。
     DOM1:映射文档结构
     DOM2:引入新模块,定义新类型和新接口(DOM视图;DOM事件;DOM样式;DOM遍历和范围)
     DOM3:引入以统一方式加载和保存文档的方法,新增验证文档方法
 浏览器对象模型也就是BOM用来处理浏览器窗口和框架,习惯上也把所有针对浏览器的JavaScript扩展作为BOM
 的一部分,以下是这样的扩展:
     弹出新浏览器窗口的功能
     移动,缩放和关闭浏览器窗口的功能
     提供浏览器详细信息的navigator对象
     提供浏览器所加载页面的详细信息的location对象
     提供用户显示器分辨率详细信息的screen对象
     对cookies的支持
     像XMLHttpRequest和IE的ActiveXObject这样的自定义对象
 由于各大浏览器对DOM的支持彼此相差比较多,尽管各浏览器都实现了某些众所周知的共同特性,但其他特性还
 是会因浏览器而异。

基本概念

任何语言的核心都必然会描述这门语言最基本的工作原理,ECMAScript的语法大量借鉴了C及其他类C语言的语法。
ECMAScript中的一切(变量;函数和操作符)都严格区分大小写哦~
标识符:
   指的是变量,函数,属性的名字,或者函数的参数,标识符按照下列规则组合:
   1.第一个字符必须是一个字符,下划线(_)或一个美元符号($);
   2.其他字符可以是字母,下划线,美元符号或数字;
   建议:标识符采用驼峰大小写格式,即第一个字母小写,剩下的每个单词的首字母大写,如:doSomething
注释:
	//单行注释
	/*
	 *这是一个多行
	 *(块级)注释
	 */
	 写注释是一个非常良好的习惯,可提高代码的可读性,企业都非常看重哦~
语句:
	ECMAScript中的语句以一个分号结尾,若省略,由解析器确定语句的结尾,但不建议,避免错误。
	if语句的大括号省略也可以生效,依然不建议,让编程意图清晰,降低出错几率,从你我做起。
保留字:
 	关键字是用于表示控制语句开始或结束,或执行特定操作等,不能用作标识符,以下列出关键字:
 	break		do		instanceof		typeof		case	else	new		var		catch	
 	finally		return		void		continue		for		switch		while
 	debugger		function		this		with		default		if		throw
 	delete		in		try		
 	一下列出另外一组不能用作标识符的保留字:
 	abstract		enum		int		short		boolean		export		interface		
 	static		byte		extends		long		super		char		final
 	native		synchronized		class		float		package		throws		const
 	goto		private		transient		debugger			implements		protected
 	volatile		double		import		public
变量:
	ECMAScript的变量是松散类型的,可以用来保存任何类型的数据,就是说每个变量仅仅是一个用户保存值的
	占位符而已,定义变量时要使用var操作符,后跟变量名,如下所示:
			var message;	定义一个名为message的变量,没有初始化的变量保存一个特殊值~undefined
	用var定义的变量会成为这个变量作用域中的局部变量,它会在函数退出后被销毁。
数据类型:
	ECMAScript中有5种简单数据类型(基本数据类型),1种复杂类型Object(无序的键值对组成)
	以下只列举操作符和数据类型,不做详细介绍,只对特殊的重要的做解释:
	typeof操作符			检测给定变量的数据类型
	Undefined类型		使用var声明变量但未初始化时,该变量的值是Undefined,主要目的用于比较
	Null类型			null值表示一个空对象指针,上面的Undefined值就是派生自null值得
	Boolean类型			字面量true表示真,false表示假,常用于判断条件表达式是否成立
	Number				数值类型,可表示整数和浮点数值(注意JS的数值范围,正无穷,负无穷)
	NaN					表示非数值,比较特殊,NaN与任何值都不相等,包括自身,isNaN()函数判断
	数值转换:
		有3个函数可以把非数值类型转换为数值:Number();parseInt();parseFloat();
		Number()函数可以用于任何数据类型,另外两个专门用于把字符串转换成数值,以下注意:
		Number()函数的转换规则如下:
			如果是Boolean值,true和false将分别转换为1和0
			如果是数字值,只是简单的传入和返回
			如果是null值,返回0
			如果是undefined,返回NaN
			如果是字符串,遵循下列规则
				如果字符串中只包含数字,则将其转换为十进制数值
				如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值,忽略前导0
				如果字符串中包含有效的十六进制格式,则将其转换为相同大小的十进制整数值
				如果字符串是空的即不包含任何字符,则将其转换为0
				如果字符串中包含除以上格式之外的字符,则将其转换为NaN
			如果是对象,则调用对象的valueOf()方法,然后按照前面的规则转换返回的值,如果转换的
			结果是NaN,则调用对象的toString()方法,然后再按照前面的规则转换返回的字符串。
	String				字符串(转义字符不再列举,自行百度)
		String数据类型包含了一些特殊的字符字面量,也叫转义字符,是非打印字符,可以出现在字符串
		中的任何位置,字符串一旦创建,值不能改变,除非销毁了之前的才能改变字符串的值。
		转换字符串需注意以下规则:
			如果值有toString()方法,则调用该方法并返回响应的结果
			如果值是null,则返回null
			如果值是undefined,则返回undefined
	Object				对象(一组数据和功能的集合)
		对象通过执行new操作符来创建和自定义,语法为:var o = new Object();
		Object的每个实例都具有下列属性和方法:
			constructor:保存着用于创建当前对象的函数(构造函数)。
			hasOwnProperty(PropertyName):用于检查给定的属性在当前实例中是否存在。
			isPrototypeOf(Object):用于检查传入的对象是否是当前对象的原型。
			propertyIsEnumerable(PropertyName):用于检查给定的属性是否能够使用for-in来枚举。
			toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
			valueOf():返回对象的字符串,数值或布尔值表示,通常与toString()方法的返回值相同。
操作符
	一元操作符:递增和递减操作符  ++  --	一元加和减操作符	+ -
	位操作符:按位非:由一个~波浪线表示,返回数值的反码
			 按位与:&,按位与操作只在两个数值的对应位都是1时才返回1,任何一位是0,结果都是0
			 按位或:|,按位或操作在有一个位是1的情况下就返回1,两个都是0才返回0
			 按位异或:^,只有一个1时才返回1,如果对应位都是1或都是0,则返回0
			 左移:<<,将数值的所有位向左移动指定的位数,左移不会影响操作数的符号位
			 有符号的右移:>>,将数值向右移动,保留符号位,有符号的右移操作与左移操作相反
			 无符号的右移:>>>,将数值的所有32位都向右移动,对正数来说,结果不变
	布尔操作符:逻辑非:!,规则:如果操作数是一个对象,返回false
							   如果操作数是一个空字符串,返回true
							   如果操作数是一个非空字符串,返回false
							   如果操作数是数值0,返回true
							   如果操作数是任意非0数值(包括Infinity),返回false
							   如果操作数是null,返回true
							   如果操作数是NaN,返回true
							   如果操作数是undefined,返回true
			   逻辑与:&&,规则:如果第一个操作数是对象,则返回第二个操作数
			   				   如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的
			   				   情况下才会返回该对象
			   				   如果两个操作数都是对象,则返回第二个操作数
			   				   如果第一个操作数是null,则返回null
			   				   如果第一个草组数是NaN,则返回NaN
			   				   如果第一个操作数是undefined,则返回undefined
			   逻辑或:||,规则:如果第一个操作数是对象,则返回第一个操作数
			  				   如果第一个操作数的求值结果为false,则返回第二个操作数
			  				   如果两个操作数都是对象,则返回第一个操作数
			  				   如果两个操作数都是null,则返回null
			  				   如果两个操作数都是NaN,则返回NaN
			  				   如果两个操作数都是undefined,则返回undefined
	乘性操作符:
			   乘法:*
			   除法:/
			   求模:%,规则:如果操作数都是数值,执行常规的除法计算,返回除得的余数
			   				 如果被除数是无穷大值而除数是有限大的数值,则结果是NaN
			   				 如果被除数是有限大的数值而除数是0,则结果是NaN
			   				 如果是Infinity被Infinity除,则结果是NaN
			   				 如果被除数是有限大的数值而除数是无限大的数值,则结果是被除数
			   				 如果被除数是0,则结果是0
			   				 如果有一个操作数不是数值,则在后台调用Number()将其转换为数值再操作
	加性操作符:
			   加法:+
			   减法:-
	关系操作符:大于>,小于<,等于=,大于等于>=,小于等于<=
	相等操作符和不相等操作符:相等==,不相等!=
	全等和不全等:全等===,不全等!==
	赋值操作符:*=,/=,%=,+=,-=,<<=,>>=,>>>=
	逗号操作符:,用于声明多个变量,赋值,执行多个操作等

语句

if语句:if(condition) statement1 else statement2
	condition(条件)可以是任意表达式,而且对这个表达式求值的结果不一定是布尔值,而是自动调用
	Boolean()转换函数将这个表达式转换为一个布尔值,如果对condition的求值结果是true,则执行
	statement1(语句1),如果对condition的求值结果是false,则执行statement2,而且这两个语句
	既可以是一行代码,也可以是一个代码块(以一对花括号括起来的多行代码)
do-while语句:do{
				statement
			  }while(expression);
		do-while语句是一种后测试循环语句,只有在循环体重的代码执行之后,才会测试出口条件
		在对条件表达式求值之前,循环体内的代码至少会被执行一次
while语句:while(expression) statement
	while语句属于前测试循环语句,在循环体内的代码被执行之前,就会对出口条件求值,所以,循环
	体内的代码也有可能永远不会被执行。
for语句:for(initialization;expression;post-loop-expression) statement 前测试循环语句
for—in语句:for(property in expression) statement
	精准的迭代语句,用来枚举对象的属性,建议使用之前检测对象的值是否为null或undefined
label语句:label: statement
	在代码中添加标签
break和continue语句:break;立即退出循环,强制继续执行循环后面的语句
		continue;立即退出循环,但退出循环后会从循环的顶部继续执行
with语句:with(expression) statement;
	将代码的作用域设置到特定的对象中
switch语句:switch(expression){
				case value: statement
				break;
				case value: statement
				break;
				case value: statement
				break;
				dafault: statement
			}
			用于流程控制也叫分支结构,含义是:如果表达式等于这个值(value),则执行后面的语句
			(statement),而break关键字会导致代码执行流跳出switch语句,如果省略break关键字,
			就会导致执行完当前case后,继续执行下一个case。最后的default关键字则用于在表达式不
			匹配前面任何一种情形的时候,执行机动代码(相当于if语句中的else)

函数

什么是函数?
	函数对于任何语言来说都是一个核心的概念,通过函数可以封装任意多条语句,而且可以在任何地方,任何
	时候调用执行,JS中的函数使用function关键字来声明,后跟一组参数以及函数体,语法如下:
	function functionName(arg0,arg1,arg2...,argN){
			statements
	}
	函数限制:不能把函数命名为eval或arguments;
			不能把参数命名为eval或arguments;
			不能出现两个命名参数同名的情况;
理解参数:
	JS函数与大多数其他语言中的函数的参数有所不同,它不介意传递进来多少个参数,额不在乎参数的类型,
	因为参数在内部是用一个数组来表示的,函数接收到的始终都是这个数组,而不关系数组中包含哪些参数,
	在函数体内可以通过arguments对象来访问参数数组,从而获取传递给函数的每一个参数,JS函数的一个
	重要特点就是:命名的参数只提供便利,但不是必需的。另外,解析器不会验证命名参数,没有传递值的
	命名参数将自动被赋予undefined值,注意所有参数传递的都是值,不可能通过引用传递参数。
牢记:由于JS不存在函数签名的特性,所以JS函数不能重载哦~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值