javascript 简介:
JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互。
jvavscript的组成:
一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
- ECMAScript 描述了以下内容:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 运算符
- 对象
- 对象 (封装 继承 多态) 基于对象的语言.使用对象.
DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。
DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物
DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。
JavaScript基础
1.javascript的导入方式
直接编写:
<script>
alert('hello gu')
</script>
导入文件:
<script src='hello.js'></script>
2.1 js的变量
1.声明变量时,不用什么变量类型,全部使用var关键字;
var a;
a=3;
2.一行可以声明多个变量,并且可以是不容类型
var name='gu';age='12';job='lect';
3. 声明变量不用var,就是全局变量
4,命名规则,首字符必须是字母,下划线或者$符号,区分大小写;
Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头。
例如: var myTestValue = 0, mySecondValue = "hi";
Pascal 标记法 首字母是大写的,接下来的字母都以大写字符开头。
例如: Var MyTestValue = 0, MySecondValue = "hi";
匈牙利类型标记法 在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列), 说明该变量的类型。
例如,i 表示整数,s 表示字符串,如下所示“ Var iMyTestValue = 0, sMySecondValue = "hi";
2.2 常量和 标志符
常量:直接出现在程序中出现的数据值
标志符:
1.不以数字开头的字母,数字,下划线_ 美元符号组成
2.常用于函数,变量等名称,
3.JavaScript语言中代表的特定能够含义的词为保留字,不允许再定义为标志符
2.3 js的数据类型
umber --数值
boolean--布尔值
string--字符串
undefined---undefined
null --null
2.3.1 数字类型number
var num=10;表示整数10
var num=1.1;表示浮点数1.1
var num=.1;表示0.1
var num=10.0;解析成10
var num=10.;小数点后面没有数字,解析成10
不区分整形数值和浮点型数值;
都采用64位浮点格式存储;
整数;
在JavaScript中10进制的整数由数字的序列组成
精确表达的范围是
-9007199254740992 (-253) 到 9007199254740992 (253)
超出范围的整数,精确度将受影响
浮点数;
使用小数点记录数据 ;3.4
使用指数记录数据;4.3e23=4.3*10的23次 方
16进制和8进制的表达:
16进制数据前面加上0x,由0-9和aA-F16个字符组成,
8进制前面加上0;0-78个字符组成
2.3.2 字符串类型(string)
由Unicode字符,数字,标点符号组成的序列;
由单引号和双引号括起来;
2.3.3布尔类型(Boolean)
只有2个值True和false,代表1和0,运算中True=1,false=0
可以看做on/off,yes.no ,1/0对应True/false
2.3.4 null和undefined类型
undefined类型只有一个值,既undefined,当声明的变量未初始化时,该变量的默认值就是undefined.
函数没有返回值,返回的值也是undefined.
null类型
只有一个值的类型,undefined是null派生出来的,null是表示尚未存在的对象
如果函数或方法返回的是对象,找不到该对象,返回null
2.4 运算符
算术运算符: + - * / % ++ --
var x=10;
x+=1;是x的自增1操作
x++;先赋值在计算
++x;先计算后赋值
- 出了表示减号还可以表示负号
+ 除了表示jiafa,还可以用于字符串连接
比较运算符: > >= < <= != == === !==
=== 是完全等于,如果字符串是数字可以和数字比较等值
console.log(2==='2')
逻辑运算符: && 逻辑与 || 逻辑或 ! 逻辑非
var name='egon';
var gender='male';
if (name=='egon' && gender=='males'){
console.log('success!') }
赋值运算符: = += -= *= /=
字符串运算符: + 连接,两边操作数有一个或两个是字符串就做连接运算
NaN
var d="gu";
d=+d;
alert(d);NaN是属于number类型的一个特殊值,当遇到字符串转成数字无效时,
就会得到一个NaN数据
alert(typeof(d));
2..4.2 比较运算符
> >= < <= != == === !==
if (2>1){
console.log("条件成立!")
等号==与非等号!==的同类运算符是全等号===和非全等号!==,
只是在检测相等性前,不执行类型装换.
}
举例:
var bResult = "Blue" < "alpha";
alert(bResult); //输出 true
在上面的例子中,字符串 "Blue" 小于 "alpha",因为字母 B 的字符代码是 66,字母 a 的字符代码是 97。
比较数字和字符串
另一种棘手的状况发生在比较两个字符串形式的数字时,比如:
var bResult = "25" < "3";
alert(bResult); //输出 "true"
上面这段代码比较的是字符串 "25" 和 "3"。两个运算数都是字符串,所以比较的是它们的字符代码("2" 的字符代码是 50,"3" 的字符代码是 51)。
不过,如果把某个运算数该为数字,那么结果就有趣了:
var bResult = "25" < 3;
alert(bResult); //输出 "false"
这里,字符串 "25" 将被转换成数字 25,然后与数字 3 进行比较,结果不出所料。
总结:
比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.
比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.
console.log(4 && 3);//3 && 与操作2个值都为非零,取最后的值
console.log(0 && 3);//0 && 与操作2个值有1个是零,得到0,
console.log(0 || 3);//3 || 或操作,2个值中有个0 ,取非0 的那个值
console.log(2 || 3);//2 || 或操作,2个值中都是非0,取第一个值
注意2:
等性运算符:执行类型转换的规则如下:
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
值 null 和 undefined 相等。
在检查相等性时,不能把 null 和 undefined 转换成其他值。
如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
2.5 流程控制
顺序结构(从上向下顺序执行)
分支结构
循环结构
2.5.1顺序结构
<script>
console.log('1');
console.log("2');
console.log('9');
</script>
2.5.2分支结构
if (表达式){
语句1;
.....
}
else{
语句2;
}
功能说明:如果表达式的值为True,则执行语句1,否则执行语句2
var x=(new Date()).getDay();//获取今天的星期值,0 为星期天
var y;
if ( (x==6) || (x==0)){
y="周末";
}
else{
y="工作日";
}
console.log(y)
if - elif - else 结构:
var score=window.prompt('您的分数:');
if(score>90){
ret="优秀";
}
else if(score>80){
ret="良";
}
else if(score>60){
ret="及格";
}
else{
ret="不及格";
}
console.log(ret)
switch-case结构
switch基本格式
switch(表达式){
case 值1:语句1;break;
case 值2:语句2;break;
default:语句4;
}
举例:
var z =2;
switch (z) {
case 1:y = "星期一";break;
case 2:y = '星期二';break;
case 3:y = "星期三";break;
default: y = '未定义';
}
// alert(z)
console.log(z)
2.5.2循环结构
语法规则:
for(初始表达式;条件表达式;自增或自减)
{
执行语句.....
}
for循环的另一种形式:
for(变量 in 数组或对象){
执行语句.....
}
while循环
while(条件){
语句1;
.....
}
var i=1;
while (i<=7){
document.write("<H"+i+">hello</H "+i+">");
document.write("<br>");
i++;
}//循环输出h1 到h7的字体大小
功能与for类型,当条件成立执行大括号内的语句,否则跳出循环,同样支持continue与break
2.5.3异常处理
try{
//这段代码从长上往下运行,其中任何一个语句抛出异常就结束运行
}
catch(e){
//try 代码抛出异常,catch代码就被执行,e是局部变量, 用来执行error对象或者其他抛出的对象
}
finally{
//无论try 代码是否有异常抛出(甚至try代码中有return语句),finally代码都会执行
注:主动抛出异常 throw Error('xxx')