JavaScript基础

一. JavaScript简介
JavaScript 是一种基于对象(object)和事件驱动(event driven)并具有一定安全性的脚本语言。有两种形式,即客户端JavaScript(在html中,由脚本引擎解释执行)和服务器端JavaScript。
客户端脚本:js等。
服务器端脚本:ASP,ASP.NET,PHP,JSP等。
用户浏览网页的过程:
这里写图片描述

网页存储在web服务器上,web客户端通过http协议向DNS服务器请求URL的地址信息,如果无DNS信息,DNS服务器想浏览器显示当前域名有误或网页不存在。如果有DNS信息,就会向浏览器返回该请求的域名所对应的的服务器IP地址,浏览器通过IP地址找到服务器后,经过web服务器上的web服务器组件(windows操作系统上为IIS,UNIX操作系统上为Apache)找到网址对应的网页文件存储路径,然后运行网页文件中的服务器端脚本,再将运行结果、客户端脚本以及HTML文档等网页信息返回给客户端,客户端的浏览器负责分析返回的HTML文档和解释执行里面的客户端脚本并显示网页。浏览器还能读取CSS样式,渲染HTML文档内容,或传输XML结构的内容。

ajax的核心就是js。
js的应用:
1.表单验证,常用到正则表达式
2.网页界面控制,动态效果,jQuery等。
3.异步数据请求:局部更新等。

JavaScript嵌入网页的方式
1.内部嵌入

<script type="text/javascript">
    //js代码
</script>

2.链接外部js文件。

<script src="xxx/xxx.js" type="text/javascript"></script>

JavaScript执行语句常通过<!-- -->包括起来,如果遇到不兼容JavaScript代码的浏览器,就会被忽略而不会跳出代码内容。不过现在的浏览器没这个问题。

<script type="text/javascript">
    <!--//js代码-->
</script>

通常js代码放在head的最后在body前,确保js代码在网页显示出来之前已经完全下载到浏览器。HTML文件的加载顺序是由上到下,由左到右。
js中,注意一下两次引号(“ ‘ ’ ”)的问题。

js代码的函数定义格式。

function 函数名(参数列表){

}

JavaScript的特点
1)简单性
2)事件驱动——动态性:可以直接对用户输入做响应,无需经过web服务器程序,以事件驱动方式进行(在网页中执行了某种操作触发的事件)。
3)跨平台
4)基于对象
5)节省与服务器交互时间:在向服务器提交数据前,可以用js对数据进行格式验证,合法后在提交服务器。

JavaScript程序代码的编写习惯
1)区分大小写
2)忽略空格、制表符、换行符
3)每行的分号,不要语句断开写成两行。
4)单行注释//,多行注释/**/

二. JavaScript语法基础
数据类型、常量、变量
变量不必事先声明类型,而在使用或赋值时再确定其类型。
1.数据类型
原始类型:(3种)

数值类型number、字符串类型string、布尔型boolean。

引用类型:

主要指对象object类型和函数。

另外还有两种特殊数据类型:未定义类型undefined和空类型null。

2.常量
不能改动的数据。
1)数值型常量,包括整数和小数
2)布尔常量,true和false
3)字符串常量
4)undefined值:当定义了变量还未赋值时,变量的值为undefined。或当访问了一个不存在的属性时,返回undefined。例如:

var a;
alert(a);  //显示undefined,因为a未赋值。
alert(typeof a);  //显示undefined。因为a的类型为undefined

5)null值。是一种特殊的object类型数据。当试图获得一个对象时,但该对象不存在,返回null。例如:

var a=document.getElementById("d1"); // 如果网页中不存在id="d1"的标记,则a=null。
alert(typeof a); //显示object,因为变量a为nullnull为一种特殊的object类型数据

6)几个特殊值:
Infinity:正无限大,正数除以0.
-Infinity:负无限大,负数除以0.
NaN:not a number简写,表示不是数值,如将数值除以字符串将得到NaN。
这三个都是特殊的number类型数据。

js中常用的转义字符 用于字符串中输出
\b 退格
\f 换页
\n 换行
\r 回车
\t 跳格
\’ 单引号
\” 双引号
\ 反斜杠

3.变量
1)标识符命名规则:
由字母、数字、下划线或$组成。不能以数字开头。
不能使用关键字作为标识符。
2)变量的声明:用var声明变量,可以赋初值。变量类型根据变量存储的数据类型确定。执行过程中可以改变变量值,类型也会改变。
变量也可不做声明,直接赋值(不推荐)。
3)变量的作用域:
全局变量:定义在所有函数体之外的变量。在函数体内直接赋值没有用var定义的也是全局变量,如x=10。
局部变量:定义在函数体内用var声明的变量。作用范围是该函数体。

数据类型的转换
1.非数值数据转数值类型number
1)Number(表达式):把参数表达式(任何数据类型)转换成数值类型。例如
Number(true) ,返回1
Number(false),返回0
Number(undefined),返回NaN
Number(null),返回0
Number(“”),空字符串,返回0
Number(“0123.4”),返回123.4
Number(“123.4aa”),返回NaN,因为包含非数字字符

2)parseInt(string[,radix]):将字符串转换成十进制整数。当遇到第一个非数字字符时,停止转换。其中,string是一个字符串,如果参数字符串的第一个字符不是数字,或参数不是字符串类型,返回NaN。radix指定一个进制数,省略的话默认是十进制。
parseInt(“12.23as”)//返回12,遇到.停止转换
parseInt(“aa12.23as”)//返回NaN,遇到第一个非数字字符时停止转换
parseInt(true)//返回NaN,参数不是字符串
parseInt(“AB”,16)//返回171,是16进制。
如果十进制数前多了一个0,最好再加上radix=10,才不会不同浏览器出错。如:
str=”010“;
parseInt(str,10);

3)parseFloat(string):将字符串转换成浮点数,当遇到第一个非数字字符(不包括小数点)时,停止转换。只有对string类型才能正确运行,其他类型返回NaN。
parseFloat(“12.23as”);//返回12.23
parseFloat(“12.23.34”);//返回12.23
parseFloat(“aa”);//返回NaN

2.其他类型转换成String类型。
其他类型转string相当于在原来的值两边加上双引号
1)expression.toString([radix]):转换表达式的值为相应的字符串。数值、布尔值、对象和字符串值都有toString()方法,但null和undefined没有。radix是进制。
2)String(value):把参数转换成字符串返回。null和undefined有。例如:

var a =true;
a.toString();//结果是true
(10).toString(2);//结果是1010
String(null);//结果是null。

3.其他类型数据转换成Boolean类型。
Boolean(value):
1)数值类型:若是0或NaN,则转换成false,否则转换成true。
2)null和undefined:转换成false。
3)字符串:若是空字符串(”“),则转换成false,否则转换成true。
4)其他对象:若存在,转换成true,否则转换成false。

运算符和表达式
js中有算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、条件运算符。
也可以分为单目运算符、双目运算符、三目运算符。

1.算术运算符: +、-、*、/、%、++、–
js中允许运算符对不匹配的操作数进行运算,会进行隐式类型转换,当不能正确转换一个操作数为数值类型是,则返回NaN。
”+“运算符如果连接的其中一个是字符串,则会把另一个也变成字符串,如果两个都不是字符串,则会变成数值类型再运算。但只有”+“运算符才可以。其他运算符只能对数值类型进行运算,如:”a”-100返回NaN。

2.比较运算符
==、===(全等,值和类型)、!=、>、<、>=、<=。

3.逻辑运算符
&&、||、!

4.赋值运算符

5.位运算符

~    位not    ~10       结果是-11
&    位and   10&6    结果是2
|      位or     10|6       结果是14
^    位xor   10^6     结果是12
<<         向左移              1<<2     结果是4
>>       向右移              16>>1    结果是8
>>>    向右无号移位    16>>>1  结果是8

6.其他运算符

?:          条件?表达式1:表达式2        如果条件成立,得到表达式1,否则表达式2.
delete
instanceof  object instanceof class。判断一个对象是否是一个类的实例。
new         创建一个新的对象实例
typeof      返回一个表达式的类型。格式:typeof表达式。返回的有5个:undefined、boolean、number、string、object。
void

7.运算符优先级

例子
这里写图片描述
这里写图片描述

JavaScript程序流程控制
1.条件控制语句
if 和 switch语句。

switch(表达式){
    case 常量表达式1:
        执行代码块1;
        break;
    case 常量表达式2:
        执行代码块2;
        break;
    ``````
    default:
        执行代码块n+1;
}

2.循环语句。
for、while、do···while、for···in语句。在循环中可以使用break和continue跳转语句。
for·····in语句:用于对数组或者对象的属性进行循环操作。for···in循环每执行一次,变量就会取数组的一个下标或者对象的一个属性,从而遍历数组或对象的属性。语法:

for(变量  in 对象){
    循环体
}

这里写图片描述
for的例子:
这里写图片描述
这里写图片描述
break语句可以跳出循环。continue结束本次循环,接着进行下一次是否执行循环的判断。

3.异常处理语句
try·····catch·····finally语句来捕获和处理异常,throw语句来抛出异常
1)try·····catch·····finally

try{
    可能会出现异常的语句
}
catch(exception){
    出现异常要执行的语句
}
finally{
    最后要执行的代码
}

其中,try和catch必须成对出现,finally语句可有可无。try里包含可能发生错误的代码,catch包含错误发生时执行的代码,exception变量里存储出错的信息,finally包含了一定要执行的代码或用于处理错误的称许代码。
当try里的语句出错,就会执行catch。当有finally语句时,不管try区域有没有出错,都要执行finally语句。
例如:
这里写图片描述
oe接收Error对象,name,number,message是Error对象的三个属性,分别返回出错类型,错误代码,错误信息。

2)throw语句
可以使用throw语句产生一个能被try·····catch·····finally语句处理的异常。

throw exception

参数exception可以是任何表达式。
js中,使用Error对象保存有关错误的信息。创建Error对象有以下3中语法格式:

var newErrorObj = new Error();
var newErrorObj = new Error(number);
var newErrorObj = new Error(number,description);

其中参数number指定与错误相连的数字值,如果省略,则为0;参数description是描述错误的简短字符串,如果省略则为空字符串。
这里写图片描述

JavaScript函数
1.JavaScript全局函数

1)encodeURI(URIstring):以utf-8编码字符串,但对字符串中的“ ; ,  / ? : @ & = + $”等字符不做编码。
2)decodeURI(URIstring):对用encodeURI方法编码的字符串进行解码。
2)encodeURIComponent(URIstring):以utf-8编码字符串,字符串中所有字符都被编码。
4)decodeURIComponent(URIstring):对用encodeURIComponent方法编码的字符串进行解码。
*5)escape(string):以16进制编码字符串,该方法不会对ASCII字母、数字和“@-+./”进行编码,对空格、其他符号等字符串用%xx编码表示,对中文等字符用%uxxxx表示。不常用。
*6)unescape(string):对用escape方法编码的字符串进行解码。不常用。
通过get方式访问某一url,如果url中包含中文等字符,为了防止乱码等编码问题,需要将url通过encodeURI函数进行编码。如果url中包含特殊字符,需要将url通过encodeURIComponent函数进行编码。
7)parseInt(string)
8)parseFloat(string)
9)eval(string):计算JavaScript字符串,并把它作为脚本代码执行,如eval("12*2+9");返回33。
10)isFinite(number):判断参数是否是有限值。是true,否false。
11)isNaN(x):判断参数是否是NaN。是true,否false。通常使用该函数检测parseFloat和parseInt函数的返回值是否为NaN。例如:var area=parseInt("abc");isNaN(area);//返回true。

2.用户自定义函数

1)函数的定义和调用
function 函数名(形参){return;(没有返回值且不需要提前跳转到调用函数的地方时)/return 表达式;}

这里写图片描述
这里写图片描述

2)参数可变的函数。
JavaScript中的每个函数中均有一个arguments数组对象,该对象会接受调用函数时传递过来的实际参数。arguments[0]对应第一个参数,arguments[1]对应第二个参数,依次类推。因此在定义函数时,形参列表可以为空,或者实参的个数可以超过形参的个数。如下,且依旧onclick=setText(this,'fromStation');

这里写图片描述

3)匿名函数
function语句可以不指定函数名。每个匿名函数都被表示为一个特殊的对象,可以方便的将其赋值给一个变量,再通过这个变量名进行函数调用,或者直接把函数定义与事件绑定。

这里写图片描述
这里写图片描述

定义了一个匿名函数,并把该函数和onload绑定,当网页加载完毕,产生onload事件,从而调用该匿名函数。也可以改写如下:

这里写图片描述

4)嵌套函数
把函数定义写在另一个函数的函数体内。一个函数的可见性封装在另一个函数中,使得内部函数作为外层函数的私有函数,即内部函数只能在外层函数内部被调用。内部函数中,可以访问外层函数中声明的变量和参数,但在外部函数中,不能访问在内部函数中声明的变量和参数。

这里写图片描述

5)函数作为参数
调用一个函数时,可以通过实际参数向该函数传递一些数据。实际参数既可以是常量,变量,表达式以及函数调用,也可以是函数名。函数名实际上是指向函数的指针。

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值