1.为什么学习 JavaScript?
JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:
HTML 定义了网页的内容
CSS 描述了网页的布局
JavaScript 控制了网页的行为
2.什么是JavaScript?
JavaScript 是一个面向对象的脚本语言,目前互联网上较流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。
面向对象是一种编程思想
面向对象是从面向过程升华而来。
面向过程--例如:从电视塔到钟楼
将从电视塔开始到钟楼结束中途所经历的每一步都要记录 【公交车】
面向对象--例如:从电视塔到钟楼
将电视塔作为起始对象,钟楼作为结束对象 【滴滴】
脚本语言--编写好以后放到运行环境中直接就能运行的语言。
3.JavaScript的版本
JavaScript 已经由 ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。
年份 | 名称 | 描述 |
1997 | ECMAScript 1 | 第一个版本 |
1998 | ECMAScript 2 | 版本变更 |
1999 | ECMAScript 3 | 添加正则表达式,添加 try/catch |
ECMAScript 4 | 没有发布 | |
2009 | ECMAScript 5 | 添加 "strict mode",严格模式,添加 JSON 支持 |
2011 | ECMAScript 5.1 | 版本变更 |
2015 | ECMAScript 6 | 添加类和模块 |
2016 | ECMAScript 7 | 增加指数运算符 (**),增加 Array.prototype.includes |
ECMAScript 6 也称为 ECMAScript 2015。
ECMAScript 7 也称为 ECMAScript 2016。
4.JavaScript的作用
JavaScript:直接写入HTML输出流
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript实例</title>
</head>
<body>
<p>JavaScript 能够直接写入HTML输出流中</p>
<script>
document.write("<h1>这是一个标题</h1>");
document.write("<p> 这是一个段落</p>")
</script>
</body>
</html>
JavaScript 对事件的反应
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>javascript对事件的反应</title>
</head>
<body>
<h1>我的第一个Javascript</h1>
<p>javascript 能够对事件作出反应。比如对按钮的店家</p>
<button type="button" onclick="alert('欢迎')">点我</button>
</body>
</html>
JavaScript 改变HTML内容
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>javascript改变HTML内容</title>
</head>
<body>
<h1>我的第一段Javascript</h1>
<p id="demo"> JavaScript能改变HTML的元素内容。</p>
<script>
function myFunction(){
x=document.getElementById("demo"); //找到元素
x.innerHTML="Hello Javascript"; ///改变内容
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>
</body>
</html>
JavaScript:改变图像
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>javascript改变图像</title>
</head>
<body>
<script>
function changeimage(){
tu=document.getElementById("myimage")
if(tu.src.match("preview2")){
tu.src="img/preview3.jpg"
}else{
tu.src="img/preview2.jpg"
}
}
</script>
<img src="img/preview3.jpg" onclick="changeimage()" id="myimage" width="200" height="180" >
<p>点击图片就可以切换成另一张图片</p>
</body>
</html>
JavaScript:改变HTML样式
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>javascript改变HTML样式</title>
</head>
<body>
<p id="demo"> javascript能改变HTML元素的样式</p>
<script>
function wuhu(){
x=document.getElementById("demo") //找到元素
x.style.color="BlueViolet"
}
</script>
<button type="button" onclick="wuhu()">点击这里</button>
</body>
</html>
JavaScript:验证输入
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>javascript验证输入</title>
</head>
<body>
<h1>验证输入</h1>
<p>请输入是数字。如果不是数字,浏览器会弹出提示框。</p>
<input type="text" id="demo">
<script>
function wuhu(){
var x=document.getElementById("demo").value;
if(isNaN(x)||x.replace(/(^\s*)|(\s*$)/g,"")==""){
alert("不是数字")
}
}
</script>
<button type="button" onclick="wuhu()">点这</button>
</body>
</html>
5.JavaScript 用法
HTML中的脚本必须位于 <script> 与 </script> 标签之间。
脚本可被放置在HTML页面的<body> 和 <head> 部分中。
<script>标签
如需在HTML页面中插入Javascript,请使用<script>标签
<script> 和 </script> 会告诉 JavaScript 在何处开始和结束。
<script> 和 </script> 之间的代码行包含了 JavaScript.
JavaScript 函数和事件
上面例子中的JavaScript语句,会在页面加载时执行。
通常,我们需要在某个事件发生时执行代码,比如当用户点击按钮时,如果我们把JavaScript代码放入函数中华,就可以在事件发生时调用该函数。
在<head>或者<body>的JavaScript
您可以在HTML文档中放入不限数量的JavaScript
脚本可位于HTML的<body>或者<head>部分中,或者同时存在与两个部分中。
通常的做法就是把函数放入<head>部分中,或者放在页面底部。这样时就可以把他们安置到同一处位置,不会干扰页面内容
<head> 中的 JavaScript 函数
在本例中,我们把一个Javascript函数放置到HTML页面的<heda>部分
该函数会在点击按钮时被调用
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
<script>
function user_D(){
document.getElementById("demo").innerHTML="我的第一个JavaScript函数"
}
</script>
</head>
<body>
<h1>我的wbe网页</h1>
<p id="demo"> 一个段落</p>
<button type="button" onclick="user_D()">点击这里</button>
</body>
</html>
<body> 中的 JavaScript 函数
在本例中,我们把一个 JavaScript 函数放置到 HTML 页面的 <body> 部分。
该函数会在点击按钮时被调用。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<script>
function user_D(){
document.getElementById("demo").innerHTML="我的第一个JavaScript函数"
}
</script>
<h1>我的wbe网页</h1>
<p id="demo"> 一个段落</p>
<button type="button" onclick="user_D()">点击这里</button>
</body>
</html>
外部的 JavaScript
我们也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。
外部 JavaScript 文件的文件扩展名是 .js。
如需使用外部文件,请在 <script> 标签的 "src" 属性中设置该 .js 文件。
myScript.js 文件
function user_d(){
document.getElementById("demo").innerHTML="我的第一个Javascript函数";
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
<script src="test.js"></script>
</head>
<body>
<h1>我的wbe网页</h1>
<p id="demo"> 一个段落</p>
<button type="button" onclick="user_d()">点击这里</button>
</body>
</html>
6.JavaScript 输出显示数据
JavaScript可以通过不同的方式来输出数据
1.使用 window.alert() 弹出警告框。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wnagxing</title>
</head>
<body>
<h1>我的第一个页面</h1>
<p>我的第一个段落</p>
<script>
window.alert(5+6);
</script>
</body>
</html>
2.使用document.write() 方法将内容写到 HTML 文档中。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wnagxing</title>
</head>
<body>
<h1>我的第一个页面</h1>
<p>我的第一个段落</p>
<button onclick="Myfunction()">点我</button>
<script>
function Myfunction(){
document.write(Date());
}
</script>
</body>
</html>
3.使用 innerHTML 写入到 HTML 元素。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 Web 页面</h1>
<p id="demo">我的第一个段落。</p>
<script>
document.getElementById("demo").innerHTML="段落已修改。";
</script>
</body>
</html>
4.使用console.log()写入到浏览器的控制台
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 Web 页面</h1>
<p id="demo">我的第一个段落。</p>
<script>
a=5;
b=6;
c=a+b;
console.log(c);
</script>
</body>
</html>
7.JavaScript 注释
JavaScript 不会执行注释。
我们可以添加注释来对 JavaScript 进行解释,或者提高代码的可读性。
单行注释以 // 开头。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1 id="myH1"></h1>
<p id="myP"></p>
<script>
// 输出标题:
document.getElementById("myH1").innerHTML="Welcome to my Homepage";
// 输出段落:
document.getElementById("myP").innerHTML="This is my first paragraph.";
</script>
<p><b>注释:</b>注释不会被执行。</p>
</body>
</html>
多行注释以 /* 开始,以 */ 结尾。
<!DOCTYPE html>
<html>
<head>
<title>菜鸟教程测试实例</title>
<meta charset="utf-8">
</head>
<body>
<h1 id="myH1"></h1>
<p id="myP"></p>
<script>
/*
下面的这些代码会输出
一个标题和一个段落
并将代表主页的开始
*/
document.getElementById("myH1").innerHTML="欢迎";
document.getElementById("myP").innerHTML="这是一个段落。";
</script>
<p><b>注释:</b>注释块不会被执行。</p>
</body>
</html>
使用注释来阻止执行
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1 id="myH1"></h1>
<p id="myP"></p>
<script>
/*
document.getElementById("myH1").innerHTML="欢迎来到我的主页";
document.getElementById("myP").innerHTML="这是我的第一个段落。";
*/
</script>
<p><strong>注意:</strong>注释块不会被执行。</p>
</body>
</html>
在行末使用注释
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<p id="myP"></p>
<script>
var x=5; // 声明 x 并把 5 赋值给它
var y=x+2; // 声明 y 并把 x+2 赋值给它
document.getElementById("myP").innerHTML=y // 把 y 的值写到 myP
</script>
<p><b>注释:</b>注释不会被执行。</p>
</body>
</html>
8.JavaScript 变量
变量是用于存储信息的“容器”
就行代数那样
x=5
y=6
z=x+y
在代数中,我们使用字母(比如 x)来保存值(比如 5)。
通过上面的表达式 z=x+y,我们能够计算出 z 的值为 11。
在 JavaScript 中,这些字母被称为变量。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<script>
var x=5;
var y=6;
var z=x+y;
document.write(x+"<br>")
document.write(y+"<br>")
document.write(z+"<br>")
</script>
</body>
</html>
声明(创建)JavaScript 变量
在 JavaScript 中创建变量通常称为"声明"变量。
我们使用 var 关键词来声明变量.
var carname;
变量声明之后,该变量是空的(它没有值)。
如需向变量赋值,请使用等号。
carname="Volvo";
不过,您也可以在声明变量时对其赋值:
var carname="Volvo";
例如:我们创建了名为 carname 的变量,并向其赋值 "Volvo",然后把它放入 id="demo" 的 HTML 段落中.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<p>点击这里来创建变量,并显示结果。</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>
<script>
function myFunction(){
var carname="Volvo";
document.getElementById("demo").innerHTML=carname;
}
</script>
</body>
</html>
一条语句,多个变量
我们也可以在一条语句中声明很多变量。该语句以 var 开头,并使用逗号分隔变量即可。
var lastname="Doe", age=30, job="carpenter";
声明也可横跨多行:
var lastname="Doe",
age=30,
job="carpenter";
一条语句中声明的多个变量不可以同时赋同一个值:
var x,y,z=1;
运行结果:x,y 为 undefined, z 为 1。
在计算机程序中,经常会声明无值的变量。未使用值来声明的变量,其值实际上是 undefined。
如果重新声明 JavaScript 变量,该变量的值不会丢失.
例如:
var carname="Volvo";
var carname;
关于变量名称的命名
通常我们在创建或者是声明一个变量的时候,都会为这个变量指定一个名称,以方便之后使用。变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。
1.变量必须以字母开头
2.变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
3.变量名称对大小写敏感(y 和 Y 是不同的变量)
使用 let 和 const (ES6)
在 2015 年以前,我们使用 var 关键字来声明 JavaScript 变量。
在 2015 后的 JavaScript 版本 (ES6) 允许我们使用 const 关键字来定义一个常量,使用 let 关键字定义的限定范围内作用域的变量。这个我们后面会详细介绍。
9.JavaScript 数据类型
数据类型实际上是用来决定所定义的变量将来所能进行那些操作。
JavaScript中的数据类型有2大类:值类型(基本类型)和引用数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型。
例如:
var x; // x 为 undefined
var x = 5; // 现在 x 为数字
var x = "John"; // 现在 x 为字符串
JavaScript 字符串
字符串是存储字符(比如 "hello")的变量。
字符串可以是引号中的任意文本。
您可以使用单引号或双引号。
var carname="Volvo XC60";
var carname='Volvo XC60';
您可以在字符串中使用引号,只要不匹配包围字符串的引号即可。
var answer="It's alright";
var answer="He is called 'Johnny'";
var answer='He is called "Johnny"';
JavaScript 数字
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带。
var x1=34.00; //使用小数点来写
var x2=34; //不使用小数点来写
极大或极小的数字可以通过科学(指数)计数法来书写。
var y=123e5; // 12300000
var z=123e-5; // 0.00123
JavaScript 布尔
布尔(逻辑)只能有两个值:true 或 false。布尔常用在条件判断中。
var x=true;
var y=false;
null
在 JavaScript 中 null 表示 "什么都没有"。
null是一个只有一个值的特殊类型。表示一个空对象引用。
用 typeof 检测 null 返回是object。
你可以设置为 null 来清空对象.
var person = null; // 值为 null(空), 但类型为对象
undefined
在 JavaScript 中, undefined 是一个没有设置值的变量。
typeof 一个没有值的变量会返回 undefined。
任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined.
var person; // 值为 undefined(空), 类型是undefined
null 与 undefined 的异同点是什么呢?
共同点:都是原始类型,保存在栈中变量本地。
不同点:
- undefined——表示变量声明过但并未赋过值。它是所有未赋值变量默认值。
例如:var a; // a 自动被赋值为 undefined
- null——表示一个变量将来可能指向一个对象。一般用于主动释放指向对象的引用
例如:var emps = ['ss','nn'];
emps = null; // 释放指向数组的引用