JavaScript

java和JavaScript的关系是蹭热度和被蹭热度的关系,本身没有血缘关系

JavaScript学什么?

  • 直接输出一个输出流。如:document.write("<h1>这是一个标题</h1>"); 
  • 对事件的反应 如:button事件。
  • 改变html中的内容。如:x=document.getElementById("demo"); //查找元素 x.innerHTML="Hello JavaScript";//改变内容
  • 改变HTML的图像
  • 改变html的属性(css)如:x=document.getElementById("demo") //找到元素 x.style.color="#ff0000"; //改变样式
  • 验证输入

JavaScript的写入格式:

代码写入<script></script>中,

代码以三种格式插入

  • 写在<body></body>中
  • 写在<head></head>中
  • 写在文件中,在<head>中插入文件名应用。

输出:

 window.alert():

弹出一个警告框。

操纵html:

初始中,我们对id=dome的标签设置了"我的第一个段落"。后面我们分为两步,一步是getElementById获取id,inner HTML去修改id中的内容

写入文档:

docount.write(),在中间插入一个文档,输出。

ps:如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖。

写到控制台:

 console.log() 方法:将需要输出的数据输入框内,会出现在控制台内。

可按f12进行查看

JavaScript的注释:

//单行注释 :仅对编程器中同属一行的//后面的内容进行注释,

document.getElementById("aaa").inner=“被修改了” //被修改了

上面例子中//后面的部分编译过程中不会被读取,只会读取前面的代码。

/* */多行注释:在/*中的内容计算机编译时都不会读取

JavaScript的变量:

第一:在声明时确定需要声明的是什么类型的变量,如数字、字符串等。

第二:变量名:可以简答也可以起对应的英文名,

第三:进行赋值。

ps:一行代码中可以写次声明。

如:var lastname="Doe", age=30, job="carpenter";

增加内容:

let关键字:定义的限定范围内作用域的变量。

const :关键字来定义一个常量

Javascript的数据类型:

数据类型的不同声明也有不同。

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。

引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

值类型定义:

数据类型可以通过“typeof”进行查看。

对字符串的定义:

格式:var  变量名="   "或'   '皆可

var carname="Volvo XC60";
var carname='Volvo XC60';

特殊的 ``  反引号,他有以下功能。

语法

`string text`

`string text line 1
 string text line 2`

`string text ${expression} string text`

tagFunction`string text ${expression} string text`

参数

  • string text:将成为模板字面量的一部分的字符串文本。几乎允许所有字符,包括换行符和其他空白字符。但是,除非使用了标签函数,否则无效的转义序列将导致语法错误。

  • expression:要插入当前位置的表达式,其值被转换为字符串或传递给 tagFunction。

  • tagFunction:如果指定,将使用模板字符串数组和替换表达式调用它,返回值将成为模板字面量的值。

对数字类型的定义:

格式: var 变量名=数值, 即可

var x1=34.00;      //使用小数点来写
var x2=34;             //不使用小数点来写

ps:科学计数法写:

var y=123e5;      // 12300000
var z=123e-5;     // 0.00123

对布尔类型的定义:

布尔类型的定义:非0(false)即1(true),多用于条件测试

var x=true;
var y=false;

Undefined 和 Null:

Undefined 这个值表示变量不含有值。

可以通过将变量的值设置为 null 来清空变量。

对象类型的定义:

对数组的定义:

//第一种方法
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";



//第二种方法
var cars=new Array("Saab","Volvo","BMW");

//数组长度根据你实际填入的动态变化,

对对象的定义:

下例中,person类似于一个对象,firstname就是他的一个属性

var person={firstname:"John", lastname:"Doe", id:5566};



var person={
firstname : "John",
lastname  : "Doe",
id        :  5566
};

我们如何输出一个对象的其中一个属性呢?

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<script>
var person=
{
	firstname : "John",
	lastname  : "Doe",
	id        :  5566
};
document.write(person.lastname + "<br>");
document.write(person["lastname"] + "<br>");
</script>

</body>
</html>

当然对象还有方法构成:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<p>创建和使用对象方法。</p>
<p>对象方法作为一个函数定义存储在对象属性中。</p>
<p id="demo"></p>
<script>
var person = {
    firstName: "John",
    lastName : "Doe",
    id : 5566,
    fullName : function() 
	{
       return this.firstName + " " + this.lastName;
    }
};
document.getElementById("demo").innerHTML = person.fullName();
</script>
	
</body>
</html>

访问的方式为:对象名+"."+方法名+"()";

ps:对象中的定义方法和直接定义的方法写法不一样。

函数调用:

函数的意义非常的大,通过调用我们能简化我们的代码,且代码可以进行复用,可以在代码中去多次调用函数。

function functionname()
{
    // 执行代码
}

注意functionname的()可以定义变量。

执行代码中可以写入return返回数值,return后面的语句不会执行,在此结束。

函数内定义的变量为:局部变量

在函数外声明的变量为:全局变量,网页上的所有脚本和函数都能访问它。

ps:若没有var let const做前缀声明,无论是声明在函数还是在全局中,都是全局变量

事件:

HTML 事件可以是浏览器行为,也可以是用户行为。

简单理解就是触发某种情况就会发生对应的改变。

实例:

  • HTML 页面完成加载
  • HTML input 字段改变时
  • HTML 按钮被点击

事件的格式:

<button onclick="this.innerHTML=Date()">现在的时间是?</button>
//button:是html属性,   onclick是典型的事件,    
//this.innerHTML=Date()是在我们点击了之后会执行的操作

//在事件的后面可以写代码,也可以调用函数。
<button onclick="displayDate()">现在的时间是?</button>
//displayDate里面调用了date去获取时间。

比较常用的事件指令

事件描述
onchangeHTML 元素改变
onclick用户点击 HTML 元素
onmouseover鼠标指针移动到指定的元素上时发生
onmouseout用户从一个 HTML 元素上移开鼠标时发生
onkeydown用户按下键盘按键
onload浏览器已完成页面的加载

JavaScript的符号:

分为四种情况:

特殊的:+可以连接字符串。

如:x=“aaa”,y='bbbb'

若执行x+y=z  

z的值为aaabbbb

运算:

运算符描述例子x 运算结果y 运算结果在线实例
+加法x=y+275实例 »
-减法x=y-235实例 »
*乘法x=y*2105实例 »
/除法x=y/22.55实例 »
%取模(余数)x=y%215实例 »
++自增x=++y66实例 »
x=y++56实例 »
--自减x=--y44实例 »
x=y--54实例 »

特别注意自增中++x和x++的区别,

x++:表示先执行代码,在进行自加,如我们输出x++,x=5的情况下,先输出了5,但x后面赋值了变成了6

++x:则表示先自加在执行代码,如我们输出++x,x=5的情况下,x赋值了变成了6,然后输出了6.

赋值:

=x=yx=5实例 »
+=x+=yx=x+yx=15实例 »
-=x-=yx=x-yx=5实例 »
*=x*=yx=x*yx=50实例 »
/=x/=yx=x/yx=2实例 »
%=x%=yx=x%yx=0实例 »

比较:

运算符描述比较返回值实例
==等于x==8false实例 »
x==5true实例 »
===绝对等于(值和类型均相等)x==="5"false实例 »
x===5true实例 »
!= 不等于x!=8true实例 »
!== 不绝对等于(值和类型有一个不相等,或两个都不相等)x!=="5"true实例 »
x!==5false实例 »
> 大于x>8false实例 »
< 小于x<8true实例 »
>= 大于或等于x>=8false实例 »
<= 小于或等于x<=8true实例 »

比较多用于循环等操作。

逻辑运算:

给定 x=6 以及 y=3,下表解释了逻辑运算符:

运算符描述例子
&&and(x < 10 && y > 1) 为 true
||or(x==5 || y==5) 为 false
!not!(x==y) 为 true

JavaScript的条件语句(if和switch)

if的三种格式:

  • if()
  • if(){}else;
  • if(){}else if{}else{}

实例:本例是比较综合的应用,囊括了前面两种情况。会从上至下进行判断,符合条件就可以执行里面的代码然后退出

if (time<10)
{
    document.write("<b>早上好</b>");
}
else if (time>=10 && time<20)
{
    document.write("<b>今天好</b>");
}
else
{
    document.write("<b>晚上好!</b>");
}

switch:

格式:

其中switch中是我们需要判断的值。

case是发生的情况,若switch中判断的值和case设置的值吻合则执行代码。

注意这里每个情况需要执行break;不执行他会继续判断。

以及default:是上面情况都不吻合的情况则执行这一段语句。

switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:
        与 case 1 和 case 2 不同时执行的代码
}

JavaScript的循环语句:

  • for - 循环代码块一定的次数
  • for/in - 循环遍历对象的属性
  • while - 当指定的条件为 true 时循环指定的代码块
  • do/while - 同样当指定的条件为 true 时循环指定的代码块

for循环:

for(变量;判断;变量的改变)

其中第一和第三部分可以省略,第一部分的变量可以执行for循环前先定义,第三部分需要在循环体中进行变量的改变

for/in循环:

设置变量去访问对象中的属性。

var person={fname:"Bill",lname:"Gates",age:56}; 
 
for (x in person)  // x 为属性名
{
    txt=txt + person[x];
}

while循环:

while (条件)
{
    需要执行的代码
}

do/while循环:

while (i<5)
{
    x=x + "The number is " + i + "<br>";
    i++;
}

注意:do/while和while的区别在于do/while是先执行do{}内的代码,再去进行判断,while则相反,需要先执行判断符合条件才执行{}内的。

特别注意:不管用哪个循环,循环体内都需要对变量进行赋值改变,或者添加break且确保break有机会被执行才行;避免死循环。

break和continue:

这一部分比较容易。

break是直接跳出整个循环体,continue则是跳过单次循环,进行下一次while或者for循环的判断。

例如我们进行100以内奇数的总和,但我们取余2为0的我们可以执行continue去跳过这一次,奇数则进行加法

JavaScript的错误检查

JavaScript的常见错误:

当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误。

可能是语法错误,通常是程序员造成的编码错误或错别字。

可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。

可能是由于来自服务器或用户的错误输出而导致的错误。

当然,也可能是由于许多其他不可预知的因素。

错误检查分为三个模块

分为try、catch、throw

throw:

其中throw意为抛出一个错误

当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。

try和catch:

try 语句允许我们定义在执行时进行错误测试的代码块。

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

JavaScript 语句 try 和 catch 是成对出现的。

catch一般可以设置发生什么问题,如数理逻辑问题,这方便我们进行代码的修改等等。

finally:

语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。

实例:

通过throw抛出具体的错误,让catch进行捕捉。

function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "")  throw "值为空";
        if(isNaN(x)) throw "不是数字";
        x = Number(x);
        if(x < 5)    throw "太小";
        if(x > 10)   throw "太大";
    }
    catch(err) {
        message.innerHTML = "错误: " + err;
    }
}

JavaScript this 关键字:

  • 在方法中,this 表示该方法所属的对象。
  • 如果单独使用,this 表示全局对象。
  • 在函数中,this 表示全局对象。
  • 在函数中,在严格模式下,this 是未定义的(undefined)。
  • 在事件中,this 表示接收事件的元素。
  • 类似 call() 和 apply() 方法可以将 this 引用到任何对象。

json:

JSON 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据 。

实例:

{"sites":[
    {"name":"Runoob", "url":"www.runoob.com"}, 
    {"name":"Google", "url":"www.google.com"},
    {"name":"Taobao", "url":"www.taobao.com"}
]}

JSON 格式在语法上与创建 JavaScript 对象代码是相同的。

由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。

通常我们从服务器中读取 JSON 数据,并在网页中显示数据。

简单起见,我们网页中直接设置 JSON 字符串 

首先,创建 JavaScript 字符串,字符串为 JSON 格式的数据:

然后,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:

最后,在你的页面中使用新的 JavaScript 对象

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<h2>为 JSON 字符串创建对象</h2>
<p id="demo"></p>
<script>
var text = '{ "sites" : [' +
	'{ "name":"Runoob" , "url":"www.runoob.com" },' +
	'{ "name":"Google" , "url":"www.google.com" },' +
	'{ "name":"Taobao" , "url":"www.taobao.com" } ]}';
	
obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj.sites[1].name + " " + obj.sites[1].url;
</script>

</body>
</html>

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值