JavaScript基础

来源:互联网 发布:淘宝官网电脑版 编辑:程序博客网 时间:2024/06/09 18:31

一. 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);//结果是1010String(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.deleteinstanceof  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)函数作为参数调用一个函数时,可以通过实际参数向该函数传递一些数据。实际参数既可以是常量,变量,表达式以及函数调用,也可以是函数名。函数名实际上是指向函数的指针。

这里写图片描述

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩高烧39度多怎么办 孩子嗓子发炎发烧怎么办吃什么药 猫咪吃了点桃子怎么办 猫吃了牛油果怎么办 苹果手机死机开不了机怎么办 新生儿出生第一天没奶水怎么办 第一天断奶奶水一直流出怎么办 3岁宝宝不长个子怎么办 5个月宝宝不长个怎么办 孩子比同龄人矮很多怎么办 孕妇做春梦宫缩怎么办 减肥掉头发很厉害怎么办 孕妇吃了金枪鱼罐头怎么办 怀孕吃了烂水果怎么办 快递水果压坏了怎么办 谈对象被骗了钱怎么办 如果遇到半夜坏人敲门怎么办 小孩晚上不进房间睡觉怎么办 房子照不到阳光潮湿怎么办 4个月婴儿不拉屎怎么办 小孩六个月奶不够吃怎么办 到晚上就没奶水怎么办 20多天奶水不够怎么办 四个月奶不够吃怎么办 7个月宝宝不肯吃东西怎么办 6个月宝宝不肯吃东西怎么办 十一个月宝宝不肯吃东西怎么办 九个月宝宝不肯吃辅食怎么办 八个月宝宝不肯吃辅食怎么办 七个月宝宝不肯吃辅食怎么办 7个月宝不吃辅食怎么办 在月子里奶不够怎么办 8月宝宝不吃辅食怎么办 8个月不吃辅食怎么办 宝宝不吃药怎么办一岁 奶水不足宝宝又不吃奶粉怎么办 一岁婴儿突然不吃饭怎么办 一岁宝宝突然不吃饭怎么办 一岁半宝宝突然不爱吃饭怎么办 1岁宝宝突然不爱吃饭怎么办 一岁多宝宝突然不爱吃饭怎么办