第一、Javascript核心基础语法

 

第一章  Javascript核心基础语法

 

一、 为什么要使用JavaScript

1.  服务器端动态网页最大缺陷:每次请求都要到服务器进行,加重服务器的负担;

2.  提高用户体验度,增加交互性。

 

二、 JavaScript和 JAVA 的区别:

1.  JAVA从编码到运行经过:编译、类装载、字节码校验、解释器 ---> 运行。即需要编译 ---> 解释 ---> 运行。

2.  JavaScript是一种解释型语言,代码存在于 HTML 网页中(或者外部连接),不需要编译即可以执行。解释特点:一行一行进行解释、执行。

3.  更多区别不再赘述。

 

三、 JavaScript的前景: HTML5+JavaScript

 

四、 JavaScript技术体系:

1.  JavaScript核心语言定义。数据类型、常量、变量、运算符、语句等。

2.  原生对象和内置对象。

3.  BOM(浏览器对象模型)

4.  DOM(文档对象模型)

5.  事件模型

 

五、 JavaScript添加到 XHTML 文档中

1.  内嵌式:

1)  <script type="text/javascript">JS代码 </script>

2)  <noscript>当禁用了 JS 时,这行文字显示在页面上 </noscript>

3)  脚本隐藏:<script type="text/javascript"><!--JS 代码 --></script> ,当前浏览器如果不支持脚本,运行到 HTML 注释时进行跳过不显示信息;当浏览器支持 JS 脚本,运行到 script 标签将 HTML 解释器转换为 JS 解释器,忽略 HTML 注释,并运行脚本。

2.  外部链接<script type="text/javascript" src=""></script> 。当 type 限制了脚本类型,外联脚本扩展名无所谓。

3.  脚本放在事件属性中:<input type="button" οnclick="alert('test')" value=" 点我 " />

4.  URL 方式: <a href="javascript:alert('test2')"> 点我 </a>

 

六、 JavaScript变量、常量

1. JavaScript是弱类型语言,定义变量时无需明确数据类型声明,而且变量并不一定要初始化。

2. 变量(空间现分配)。 var a;a=5(Number 类型 );a="string"(string 类型 )

3. 常量: const a=5; 这里如果没有初始化,类型就为 undefined

 

七、 JavaScript数据类型

(一) 原始数据类型 5 种:

1.  Undefined类型:

没有被赋过值即未定义类型(没有分配空间)

如:a--->  XX aundefined 时,空间没有分配

 

2.  Null类型

空间已分配,但对象为空(引用数据类型)

如:a-->  null   已分配,对象为空。

请看下列代码:

var num=null;

alert(typeof num);

返回object 类型 null 被认为是对象的占位符

 

3.  Boolean

特别现象:(Chrome JavaScript 控制台 )

 


再看看其他情况:

""==false;

evaluating...

true

0==false;

evaluating...

true

总结(数据类型自动进行了转换):直接用== 判断 null/undefined 时,永远返回 false ,据说是设计 JavaScript 时规定的。。。

if 条件中使用:

①  至少有一个字符的字符串、非0 数字或对象,返回 true

②  空字符串、0nullundefined 返回 false

 

4.  Number类型

①  可以表示32 为的整数,也可以表示 64 位的浮点数。

 

②  Number类型的外边界及无穷(无穷不能参与计算):

Number.MAX_VALUE*100;

evaluating...

Infinity

③  特殊值:NaNnot a number )函数: isNaN()

NaN不能用于算术计算,而且与自身不相等

NaN==NaN;

evaluating...

false

0/0;

evaluating...

NaN

1.0/0;

evaluating...

Infinity

4/0;

evaluating...

Infinity

isNaN("dddss22");

evaluating...

true

isNaN("122");

evaluating...

false

JAVA 中,当任何实型除以 0 ,都会抛出数学异常,浮点数除外: 1.0/0 -->Infinity

 

5.  String类型

JavaScript没有字符类型,所以声明字符串可以用双引号或者单引号

 

6.  数据类型转换

①  自动转换:

"2"+1;

evaluating...

21

"2"-1;

evaluating...

1

②  转换数字的方法:parseInt() parseFloat()  只能对 string 类型转换,其他类型返回 NaN

parseInt("2dd");

evaluating...

2

parseInt("d2dd");

evaluating...

NaN

parseInt(true);

evaluating...

NaN

parseInt("1.5dd")

evaluating...

1

parseFloat("1.5dd")

evaluating...

1.5

 

练习:

a.  Select标签中用 JavaScript 写出 1900--2000option

 

	<script type="text/javascript">
        	for(i=2000;i>=1900;i--){
document.write("<option value='"+i+"'>"+i+"</option>");
}
        </script>
 

 

b.  JavaScript写出九九乘法表

 

两个FOR循环

<table border="1">
	<tr>
  <script type="text/javascript">
        	for(i=1;i<=9;i++){
				for(j=1;j<=9;j++){
					document.write("<td>"+j+"*"+i+"="+j*i+"</td>");
					if(j==i){
						for(k=0;k<9-j;k++){
							document.write("<td></td>");
						}
						document.write("</tr>");
						break;
					}
				}
			}
  </script>
</table>
 

一个FOR循环

 

<table border="1">
	<tr>
  <script type="text/javascript">
        	for(i=1,j=1;i<=9;j++){
					document.write("<td>"+j+"*"+i+"="+j*i+"</td>");
					if(j==i){
						j=0;
						i++;
						document.write("</tr>");
					}
			}
  </script>
</table>
 

 

 

(二) 引用数据类型  对象

 

1.  对象分为:预定义对象和自定义对象;

预定义对象:

①  原生对象:如Object,Function,Array 等等

②  内置对象:Global Math

③  宿主对象:DOM BOM

 

 

2.  概述:

①  Object: JS 中所有对象的基“类”。属性: constructorprototype

 

②  原始类型包装器:BooleanNumberString

String.length 属性( JAVAStringlength() 是方法)

String.slice() <==>JAVA String.subString();

下面这句代码进行了类型转换:

 

 

num = "ABCD";
alert(num.slice(1,3));
 

 

③  Array:

1)  数组的初始化:arr=new Array();arr=new Array(5);arr=[1,"abcd",true];

2)  特点:

a.  自增长

b.  每个数组元素类型可以不同,因为JS 是弱类型语言,每个元素可以是任 意的数据类型

c.  当数组某几个元素没有初始化,返回undefined 。如:

arr = new Array();arr[0]=true;arr[7] = 2;alert(arr[5]);  ==>返回 undefined

 

④  Date:getHours();getMinutes();getSeconds();

需要注意的是:month 默认从 0 开始,即现实中的 5 月份, getMonth() 返回 4

 

⑤  Global:需要记忆的方法有: parseInt parseFloat eval 等等

Eval:调用解释器解释、执行参数内的字符串;其重要性相对于: JAVA 中的反射。

事例:业务需要从服务器端传递一个数组到客户端:{1,2,3,4,5};

首先在服务器中将数组写为一个字符串:"[1,2,3,4,5]"  并传递到前台

JS 中我们获取到这个字符串可以如下构造这个数组:

eval("var arr=[1,2,3,4,5]");alert(arr);

 

⑥  函数

a.  关键字function +  函数名  形参列表  方法体

b.  因为JS 是弱类型语言,所以函数定义返回类型没有必要。

c.  几个特别的例子:

1.  调用有参数列表的函数,但是没有传递参数,返回undefined ,因为形参 没有初始化, undefined 计算还是 undefined

function a(b,c){return b+c;} alert(a());
 

2.  调用无参数列表的函数,但是传递了参数;函数有隐式的arguments 数组 获取参数

function a(){return arguments[0]+arguments[1];} alert(a(1,2));
 

3. 

 

function a(){return arguments[0]+arguments[1];} 
var result=a; //复制指向这个方法体的指针
alert(result);//返回:function a(){return arguments[0]+arguments[1];} 
alert(result(1,9));
 

 

 

4. 匿名函数: var a=function(){};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值