JavaScript

JavaScript

JavaScript是浏览器的核心脚本,Css和JavaScript都是为HTML服务的,JS是按照事件驱动的,如鼠标点击就是一个事件,事件都会对应一个事件句柄,如事件Click的句柄就是onclick,事件句柄一般以属性存在,

第一种引用JS

1
2
<input type="button" value="hello" onclick="_JSCode" />
<!--页面打开JS不会执行,只是把JS注册到按钮,发生事件才会调用-->

JS有一个内置对象叫Window,window.alert(“_Content”)

第二种引用

1
<script type="text/javascript">alert("_Content")</script>

在脚本块的JS代码不需要事件,直接执行,按照顺序执行,脚本块可以放在任何地方

第三种引用

1
2
<script type="text/javascript" src="js/1.js"> </script>
//type在HTML5后可以不用写,默认了

在引入时,就会之间执行JS的代码,JS标签不是自闭和的,

语法

java是右边的值赋给左边的变量,而JS是左边的变量赋给右边的值

1
2
3
4
var i = 1;
i = true;
i = new Object();

函数

java中的函数 修饰符+返回值+方法名(参数)+方法体,返回值,方法名和参数应该是关键,java中形参和实参必须一致,返回值也得符合,而JavaScript不需要返回值类型,所有有以下两个写法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function _Name(){
_Function_Body;
}

_NAME = function(){
_FUNCTION_BODY;
}

_Name(a,b)
//调用函数

var uu = new _NAME()
//new的时候就会调用
alert(uu)
//返回Object

<input type="button" value="hello" onclick="sayHello('jack')" />
//在onclick字符串就可以之间放入函数

当传入的参数不符合规定时,有NaN(Not a number),undfined几种情况,JS中出现方法名相同时,后面的函数会直接覆盖,JS中只靠函数名分辨函数,而不是参数,因为参数没有类型,只是一个名字

虽然函数参数没有限制了,但我们还是希望输入特定的参数

1
2
3
4
5
6
7
function sum(a,b){
if(typeof a == "number" && typeof b == "number"){
return a + b;
}
//if(isNaN(a) || isNaN(b))这样也可以
alert(Warning)
}

变量

  • 全局变量的会在浏览器的内存中,局部变量只在函数周期,访问变量时是就近原则,undefined是一个值,变量依旧不能为空,当变量没有赋值默认是undefined,Undefined只有一个值就是undefined,

  • Number代表所有的数字,以及NaN,Infinity(无穷大),

  • 字符串为空的时候自动转换为false,否则就是true,数字1为true,0为false,null和NaN为false,undefined是false,Infinity是true,

  • 大String属于Object,小String属于是原始类型,有点像包装类

  • Object含有prototype和constructor属性,toLocaleString,toString,valueOf方法

方法就是类,类里面有个属性prototype可以扩展,例如uu.prototype.getName = function(){},这样uu对象就扩展了getName的方法,

1
2
3
4
5
6
User = function(username, password){
this.username = username;
this.password = password;
}
var u = new User();
//不再需要额外写构造方法,类就是构造方法,两个构造参数,就会有三个构造方式

JS常用事件

Blur click focus keydown keyup load mousedown mouseover mousemove mouseout reset select submit change

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//第一种是注册button按钮
<input type="button value="hello" id="mybtn" />

//第二种是JS代码完成事件,documenet是内置对象
var button = document.getElementById("mybtn");

//不能加括号!!!!
//onclick就是button的一个属性,这个属性类型是方法
//因为类就是方法,这里的方法不能加(),不然就会直接执行方法,onclick是属性,也是方法
button.onclick = sayHello;

//sayHello=function(){}这也是为什么不能加();
button.onclick = function(){
alert();
}

//页面加载后再执行
window.onload = ready;
function ready(){
var button = document.getElementById("mybtn");
button.onclick = function(){
alert();
}

//同理,只是注册,页面先全部过一遍后再执行onload
window.onload=function ready(){
var button = document.getElementById("mybtn");
button.onclick = function(){
alert();
}



load是一种事件,加载完毕就会发生,不赋值就没有任何操作,和click一样,默认都会有这个属性,事件发生自动触发函数,函数可以再绑定另一个事件,不带括号是对象,带了就是执行函数,

下面是获取回车键值事件

1
2
3
4
5
6
7
8
9
10
11
<input type="text" id="username" />

//浏览器会自动传入参数,键盘对应的参数
window.onload = function(keyNum){
//键盘事件自带属性,浏览器传的是个对象
if(keyNum.keyCode === 13){
alert();
}
}

function sayHello()

下面是超链接不跳转

1
2
//javascript不开省略,告诉浏览器,这是代码,不然void当做地址了
<a href="javascript:void(0)" onclick="window.alert('test')">click </a>

javascript的数组非常厉害,就和集合一样,什么类型都可以放,还可以自动扩容

下面是遍历的代码

1
2
3
4
5
6
7
8
for(var i in arr){
alert(arr[i]);
}

//如果是对象可以这样,可直接访问属性
with(_Object){
alert(_username)
}

JavaScript
http://example.com/2024/04/07/JavaScript/
作者
Jack Asher
发布于
2024年4月7日
许可协议