JavaScript教程

JavaScript 教程
什么是 JavaScript
JavaScript 是一个轻量级的脚本语言。不具备开发操作系统的能力,只是用来编写或控制其他大型应用程序的脚本 (
其他大型程序内部运行的语言 )
JavaScript 简称为 JS ,也是一种嵌入式语言 , 本身提供的核心语法不算很多,只能做一些数学和逻辑运算。 js 本身不提
供任何 I/O( 输入 , 输出 ) 相关的操作。主要靠宿主环境,提供相应的 API( 应该程序功能的接口 )
对于前端, JS 的主要宿主 ( 运行 ) 环境是浏览器。
JS 能做什么
操控浏览器的能 : js 的宿主环境是浏览器,浏览器给 js 提供了很多的 API 可以操作浏览器实现各类交互效果。
HTML5 出现以后,浏览器的本身功能越来越强,浏览器不仅是浏览器网页,可以调用操作系统的相关的功能,
如果本地文件,图片,摄像头,麦克风 , 调用手机的很多功能 ...
利用 Node.js 平台,可以做 web 服务器开发 ( 后端开发 )
数据库操作,如 NoSql( 非关系型数据库 ), 本身基于 js JSON 格式,支持 JS 作为操作语言。
移动平台开发,如果开发 webapp( JS h5 打包到一个容器中 )
内嵌脚本,其他很多应用可以嵌入 js ,使 js 可以操作对应的应用。
h5 游戏,基于 js 的游戏引擎,可以做各类游戏开发。
3D 特效,利用 3D js (D3.JS,three.js) 可以做各类 3D 项目
JS ECMAScript 的关系
Netspace 网景公司为了与微软竞争,把 js 提交了给了 ECMA 组织,使其进行了国际化标准。 ECMA 主要指定了 JS 的语
\ 结构 \ 部署环境等相关标准。 JS ECMAScript 指的都是一种语言。
JavaScript java 没有任何关系, Netspace 公司为了让语言更有名气,蹭 java 的热度,取名叫 JavaScript
ECMA 2015 年 发布了 ECMAScript 6(ES6) 的版本,正式更名为 ECMAScript 2015
由于 ES6 版本相对于之前版本,改动非常大,所以 ES6 是最出名,现在大家所说的 ES6 指的 ES6 及其后面的版本。
ECMA 以后每年都会发布一个版本
JS 的基本语法
写入 js 代码的方法
JS 的宿主环境是浏览器,所以需要把 js 放入 html 标签,通过浏览器运行 html ,解析运行 js
1. 通过 <script> 标签包裹 js 代码 :
script 脚本标签,告诉浏览器这是一个脚本语言 ,js 代码就放入 script 标签之间。
type="text/javascript" 声明脚本的类型 ,h5 可以省略该属性 (h5 默认的脚本就是 js)
script 标签可以放在任意位置 , 可以有多个 script 标签 2. 通过 script 标签的 src 属性引入外部 js 文件 : js 代码写入 .js 的文件中,通过 src="xx.js" 的方式引入外部文件 ,src
可以引入本地文件或者网络路径文件。
在网站的 js 目录创建 main.js 文件,写入以下代码 :
通过在 html head 标签引入 main.js 文件
1. 浏览器遇到 script 标签回去加载对应的 js 文件并运行,如果 js 文件比较大,可能等等的时间比较久。 可以
script 标签添加 defer 属性,让 js 代码异步加载 ( 渲染 html 标签的时候同时加载 js 文件, js 不会阻塞 html
渲染 )
2. js 可能会操作 dom(html 标签 ) ,在头部引入可能 js 运行的时候后面的 html 标签都没有渲染,就会出错。
一般的做法是放在 body 的结束标签之前,引入 js ,这样所有的 html 标签都构建了, js 操作 html 标签不会出错。
语句
JS 程序执行的单位是行 , 也就是一行一行的执行代码。一般情况下,每一行都是一个语句。
如果有 ;( 分号 ) ,则是分号前面为 1 个语句,多个分号分割的语句可以写在一行。 ( 多个语句在一行,必须加 ; 区分 )
如果一个语句一行,则不建议加分号
<script type="text/javascript">
// document 表示当前的网页, write() 可以在当前网页打印内容。
document.write("hello js")
</script>
document.write(" 外部文件 ")
<!-- 引入外部的 js 代码 -->
<script src="./js/main.js"></script>
....
<script src="./js/main.js" defer ></script>
</body>
<script>
document.write("a")
document.write("b")
</script>
<script>
document.write("a");document.write("b");
</script> JS 代码执行语句是从上往下执行。
变量
变量有点像数学里面的未知数。变量可以表示一个值,引用变量就相当于引用了值 ( 变量相当于一个盒子,装不同的
内容,拿到盒子的时候就是拿到对应的内容 )
1. 变量 : 变量是对一个具体值的引用
2. 变量创建后需要赋值才能使用 , 如果不给变量赋值,变量默认值是 undefifined( 未定义 )
3. 创建变量后可以直接赋值
4. 变量不用 var 关键词也是可以直接赋值使用,但是用 var 关键有创建变量的语义,可读性更强。
5. 变量没有声明同时也没有赋值,直接使用会报错。 js 代码运行出错,则会停止后面代码的运行。
f12 console 控制台能看到 js 报错信息
6. 可以在同一个 var 关键词中声明多个变量
7. 如果 var 声明了一个已经存在的变量,则无效
8. var 创建变量名的规范和 html id 命名类似:
第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号( $ )和下划
线( _
第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字 0 - 9
var name; // var 创建 一个 name 的变量 ( 声明变量 )
name=" 苹果 " // 变量赋值 ( 把苹果赋值给 name 变量 )
document.write(name); // write 可以处一个变量,由于 name 的值是苹果,程序执行的时候会查询 name 变量对应的
值并使用。
var age;
document.write(age)
var sex="man"; // 等于 var sex; sex = "man"
name1="zhangsan"
document.write(x)
var a,b,c;
a=10;b=14;c=21;
var y=1;
var y=2; // 等于 var y; y=2; var y 失效 ,y=2 是有效的。 变量命名一般要有一定的语义,多个单词的变量用小驼峰命名法 ( 小驼峰 : 第二个单词开始,首字母大写。
大驼峰 : 所有单词的首字母大写 )
js 的变量名区分大小写,大写和小写是不一样的变量
变量命名不能用 js 内置的关键词
JavaScript 有一些保留字,不能用作标识符 ( 变量名 ) arguments break case catch class const
continue debugger default delete do else enum eval export extends false fifinally
for function if implements import in instanceof interface let new null package
private protected public return static super switch this throw true try typeof
var void while with yield
JS 输出信息的方式
在网页上打印出 js 的内容
console.log() f12 后的开发工具的 Console( 控制台 ) 输出内容 , 一般调试 js 或者练习 js 输出内容用这个比较多
Console 可以执行 js 代码,并且使可以用当前页面的 js 声明的变量
alert() 提示消息
prompt() 接受用户信息
JS 的注释
// 单行注释 , 只能注释一行 js 代码
/* */ 多行注释 , 可以注释多行代码
var classRoom; // 小驼峰
var ClassRoom; // 大驼峰
document.write(num)
// document.write() 可以输出 html 标签。最简单生成 dom 的方式。
// 双引号里面只能用单引号,或者单引号里面只能用双引号
var str = "<div class='box'>box1</div>"
var str1 = '<h1 class="box">h1</h1>'
document.write(str1)
console.log(num)
// 弹窗显示内容 ( 提示消息 ), 可以暂停后面代码运行,点击确认以后后面代码再执行
// alert("hello js");
// console.log("after")
var num = +prompt() // + 可以把字符串转为 number 类型,如果转换识别会转为 NaN 类型 ,NaN 转为 bool 就是
false
console.log(typeof(num),num) 数据类型
js 的每一个值的,都属于一种数据类型。 JS 6 种数据类型 ( 不包含 ES6 新增的数据类型 )
由于值一般赋值给变量,所以数据类型一般指变量的数据类型。
number,string,boolean 合称为 js 的原始数据类
1. 数值类型 (number) 有整数和小数 , 不能用 "" 或者 '' 包裹
2. 字符串 (string) 文本类型 , 必须用 "" 或者 '' 包裹
3. 布尔值 (boolean) 只有两个值,表示真即 true, 表示假即 false 。主要用于逻辑判断
4. undefifined 表示 " 未定义 ", 由于目标没有定义,所以没有任何的值 ( 一般变量声明没有赋值,默认就是 undefifined
类型 )
5. null 表示空值
6. 对象数据类型 , 主要是各种值组成的集合,可以细分为:
狭义的对象 (object), 数组 (array), 函数类型 (function)
7. js 变量的数据类型是动态变化的,根据赋值的值的类型变化。
8. typeof 运算符可以查看变量的类型
9. typeof() 函数可以查看变量的类型,和 typeof 运算符一样
/*
多行注释
*/
var num1 = 100; // 整数
var num2 = 1.1; // 小数
var num3 = +1; // 正数,一般省略 +
var num4 = -1; // 负数 , 不能省略
var name = "zhang san"
var age = "12"
var ok=true
var nook=false
var sex // 创建变量,没有赋值默认就是 undefined
var c=null
console.log(typeof sex) 算术运算符
js 的算术运算符 提供了 10 个算术运算符,用于完成基本的算术运算。
除了加法可以用在字符串上面,其他的算术运算符只能计算 number 类型。
不符合算术运算的规范的时候,计算结果是一个 NaN 的值。
如果有 = 号, js 先运行 = 号右边代码,然后再把结果赋值左边
1. 加法运算符 +
2. 减法运算符 -
3. 可以把值赋值给变量,通过运算符运算变量
4. 乘法运算符 *
5. 除法运算符 /
6. 指数运算符 **
7. 余数运算符 ( 有余数显示余数,没有余数显示的 0)
console.log(typeof(ok))
var result = typeof(ok) // 可以把查看变量的类型赋值给 result 变量
console.log(result)
var r1 = 100 + 20 + 30; // number 类型的加法就是数学加法计算
console.log(r1)
// 1.1 字符串也可以使用加法,这是就是变为拼接显示
var s1 = "1" + "aa"; // + 可以把多个字符串拼接起来
var s2 = 10 + 12 + "1" // 按算术运算顺序计算,先计算 10+12=22 ,再计算 22+"1"==221
console.log(s2)
var s4 = 20 - 10
var s3 = 10 - 5 - "a" // 由于减法不能有字符串,所以结果是一个 NaN
var width = 100
var height = 200
var r2 = width + height
var r3 = 5 * 5
r3 = 10 / 3
r3 = 2 ** 2 8. 自增运算符 ++x 或者 x++ ( x 自动加 1)
9. 自减运算符 --x x--( 自身变量减 1)
10. 赋值运算符简写
11. 数值运算符 +x, 可以表示一个正数,是一个一元运算符,可以把任何数值转为 number 类型
12. 负数值运算 -x ,和 +x 一样可以把任意值转为 number 类型,变成负数 , 前面会变成负号
区块
区块 , 使用 {} 可以把多个相关的语句组合在一起,称为 block( 区块 )
r3 = 10 % 3
var a = 0
// a++;
++a;++a;++a;
// 7.1 ++x x++ 的区别
var b = 1
// var c = ++b // 先运行 ++b=2 , 再把 2 赋值给 c c = 2
var c = b++; // 先把 b 赋值给 c ,在进行 b 变量的递增 (++ 在后是先使用变量,再对变量递增 )
var a1 = 1
--a1
//8.1 --x x-- 的区别
var a2 = a1-- // --x 是先自减再使用, x-- 是先使用变量,再自减。
// console.log(a2)
var a3 = 10
a3 += 10 // 等价于 : a3 = a3 + 10
a3 -= 5 // 等价于 a4 = a4 - 5
a3 *= 5 // a3 = a3 * 5
a3 /= 5 // a3 = a3 / 5
a3 %= 5 // a3 = a3 % 5
a3 **=5 // a3 = a3 ** 5
console.log(+true) // 由于 true 表示真,在计算机二进制里面表示 1 ,所以会转为 number 类型的 1
console.log(+false) // false 表示二进制的 0 ,所以转为 0
console.log(+"4") // 转为 number 类型的 4
console.log(+"a") // 转不了 number 则显示 NaN
console.log(-false)
var c1 = -1
console.log(-c1) // 可以用负负得正把一个负数变为正数 变量提升
JS 是解释型语言 ( 边编译,边执行 ) ,但是在浏览器上,浏览器会对 js 进行编译,然后再运行。 浏览器编译 js 的时候,会
把所有 var 声明变量的提到代码的第一行。
逻辑运算符
逻辑运算符 , 产生的结果是 boolean 类型
1. 等于 x == y 判断符号 x == y ,如果 x y 的值相同 ( 不会判断数据类型 ) 返回真 (true) ,不相等怎返回假 (false) 。由
于不判断数据类型,字符串和 number 的值可能是相同的
2. 全等于 x === y 全等于 , 需要比较值和数据类型 , 一般用全等于比较,严格一点。
3. 不等于 x!=y 只判断值,不判断数据类型。成立返回 true ,不成立返回 false
4. x !== y 全不等于,比较值和数据类型。
5. ! 非运算符,取 boolean 的反值
6. && 与运算 , 与运算左边和右边同时都为 true 则返回 true ,否则都是返回 false
// var 创建的变量受区块的限制,可以跨区块使用
{
var a = 10
var b = 10
console.log(a+b)
}
{
// var 创建的变量受区块的限制,可以跨区块使用
console.log(a*10)
}
{
console.log(c)
var c=10 // var c;c=10;
}
var a = "3"
console.log(a == 3) // 不要写成一个等号 (=) ,一个等号是赋值 , 如果再判断语句永远都是 true
console.log(a === 3)
console.log(a != 3)
console.log(a !== 3) // a 3 的数据类型不同,这个条件成立,返回 true
console.log(!true) // true 的反值是 false
console.log(!!false) // !false true !true 的值是 false 7. || 或运算 , 左右两边只要有一个 true ,则返回 true 。只有同时都为 false 的情况才返回 false
() 小括号的作用
1. 在算术运算符中 () 可以提供计算的优先级,有括号的先计算
2. () 可以把 js 放在 () 里面,表示一个整体
3. 可以提高逻辑运算符的优先级
if 条件语句
条件语句 : js 提供了 if 结构和 switch 结构,完成条件判断,只有满足预设的条件,才能执行响应的语句。
1. if 结构的小括号里面的 boolean true 则会执行紧挨着 if 的语句 ( 只有一条 )
console.log(true && true) // 两边同时为 true 返回 true ,只要有一个 false 则返回 false
// 一、 && 与逻辑运算符 , 两边都要执行,同时为 true 才返回 true
console.log(false && false)
console.log(1 === 1 && 2 === 3)
var x = 2
var y = 3
// 与逻辑运算符左右量可以写 js 的表达式
// console.log(x === 2 && console.log(" 右边执行 "))
console.log( false || false)
|| 或逻辑运算符,如果左边是 true ,不会执行右边的代码 .
console.log(x === 1 || console.log(" 右边执行 "))
var a = ""
var b = a || 1 // || 逻辑会判断左边是否为 true( 如果左边不是 boolean 类型,会转为 boolean 类型 )
// 0 转为 boolean false ,非 0 则转为 true
// undefined 转为 boolean false
// null boolean false
// NaN boolean false
// "" 空字符串转 boolean false
console.log((3+5)*2)
var a = -(-1)
console.log((false && true) || (false && true))
if (boolean)
语句 if(false)
console.log("is true1") // 如果 if 条件为 true ,则只会执行这一行代码。
// 后面的代码没有挨着 if 语句,不受条件限制。
console.log("is true2")
var x = 10
console.log(x)
2. 如果挨着 if 结构的语句是代码块,如果 boolean true ,则整个代码块都会被执行 , 一般常用该方法。
if(boolean){
....
}
if(false){
console.log("is true1") // 如果 if 条件为 true ,整个 {} 代码块里面的语句都会执行
console.log("is true2")
}
3. if() if 括号里面的条件如果不是 bool 类型,则会自动转 bool 类型。一般 if 结构的条件以逻辑运算符居多
if(1 === 3 || 4 === 4){
console.log("goood")
}
4. else 语句
if(boolean){ // boolean true 执行挨着 if 语句的代码块
...
} else { // boolean false 则执行挨着 else 的语句。 else 必须挨着 if 语句
...
}
var age = 12
// 大于 > , 小于 < , 大于等于 >= , 小于等于 <=
if(age <= 10){
console.log(" 小于等于 10 ")
} else {
console.log(" 大于 10 ")
}
5. 多条件判断语句 else if(boolean){}, else if 必须挨着 if 语句或者 else if 语句 , 多个条件中只会执行一个 , 如果 bolean
true ,则会停止后面的条件判断。 switch 条件结构语句
switch 主要是简化多条件判断语句,用 x 去和 case 后面的值做全等于 (===) 比较 , 如果为 true 则会执行 case 里面的
语句, break 是不会执行后面的语句,直接跳出 switch 语句
if(age < 10){
console.log(" 小于 10")
} else if(a < 20){
console.log(" 小于 20")
} else if(a < 30) {
console.log(" 小于 30")
} else { // 如果前面的条件都不成立,则执行 else 语句
console.log(" 大于等于 30")
}
// 需求 : 95-100 完美 , 80-95 优秀, 70-80 良好, 60-70 及格 , 60 以下不及格。根据一个分数,判断是
属于哪个等级。
var score = 75;
if(score <=100 && score > 95){
console.log(" 完美 ")
} else if(score <=95 && score > 80){
console.log(" 优秀 ")
} else if(score <=80 && score > 70){
console.log(" 良好 ")
} else if(score <=70 && score >= 60){
console.log(" 及格 ")
} else {
console.log(" 不及格 ")
}
// 编程语言的最大特点是根据不同的思想有不同的写法,不同的代码写法运行的效率也不一样。
if(score < 60){
console.log(" 不及格 ")
} else if(score <= 70) {
console.log(" 及格 ")
} else if(score <= 80){
console.log(" 良好 ")
} else if(score <= 95) {
console.log(" 优秀 ")
} else {
console.log(" 完美 ")
} 循环语句
主要用于执行重复的某个操作
while 循环语句
switch(x){
case value1:
语句 1;
break;
case value2:
语句 2;
break
default:
语句 3
}
var name = " "
switch(name){
case " ": // 等价于 name === " "
console.log("number1")
break // 执行语句遇到 break 终止后面代码执行,跳出 switch 语句,执行 switch 后面语句
// 如果不加 break ,如果 case 条件为 true 以后,后面的 case 语句都不会在去比较,会直接执行里面的
语句。 switch 语句必须加 break
case " ":
console.log("number2")
break
default: // 执行到 default 运行里面的语句
console.log("number1000")
}
console.log("over")
// 如果排名是 100 名或者 90 , 表示中一等奖
// 如果排名是 80 或者 85, 表示二等奖
// 其他的没有奖
var sort = 80
switch(sort){
case 100: // 相同条件 ( 或逻辑 ) ,可以用该写法。
case 90:
console.log(" 一等奖 ")
break
case 80:
case 85:
console.log(" 二等奖 ")
break
default:
console.log(" 没有奖 ")
} for 循环语句
指定循环的其他初始化的一个 number 值,循环的终点到 number 增加到多少 , 终止条件,当终止条件为 true 则循环执
for 语句,为 false 则终止循环执行 for 语句后面的语句
while(bool){ // bool true, 则会循环 ( 执行 ) 代码块的语句。执行完成一次后就回到 while 判断 bool ,一直重复下
去。如果 bool false 则不会执行 while 语句,会执行 while 后面的语句。
语句
}
// while 循环环境
var i=0;
while(i < 100){ // 如果 while 的条件一直为 true, 容易进入死循环,当前页面的内存占满,页面会崩溃。 while 一般
需要有结束条件
i++
console.log(i)
}
for(1. 初始化表达式初始化一个 number 变量 ;2. 终止条件为 true 执行 false 则终止 ;3. 递增表达式递增变量 ){
4. 语句
}
第一次 for 循环执行 1,2, 4 执行代码块语句 ,3. 递增
第二次以及后面 : 2,4,3
如果 2 false ,则退出 for 循环,执行 for 后面语句
for(i=1;i<=100;i++){
// console.log(i)
}
// 声明变量并初始化变量
for(var j=0;j<=100;j++){
console.log(j)
}
// 输出 100 以内的偶数
for(var k=1;k<=100;k++){
if(k % 2 === 0){
console.log(k)
}
}
// 输出 3 行数字,每行数字都是从 1-10 的排列
for(var y=1;y<=20;y++){
var str = "";
for(var x=1;x<=10;x++){
str +=" " + x
}
str = "<p>"+str+"</p>"
document.write(str)
}
//
for(var a1=1;a1<=5;a1++){
for(var b1=1;b1<=a1;b1++){
document.write("*") do...while 循环语句
while 比较类似,都是循环。先执行 do 后面的代码语句,再判断条件是否为 true true 则循环执行 do...while 。如果
false 则终止循环,执行 while 后面语句
break 语句。
可以跳出循环代码块
1. 跳出 switch
2. 跳出循环语句 for,while do...while
continue
终止当前这一次循环,返回循环头部执行后面循环
}
document.write("<br/>")
}
do{
语句
} while( 条件 )
var i=0;
while(i<100){
i++
// 100 里面找出等于 10 的数字,找出以后后面不需要再执行循环,可以加 break 跳出当前循环,这样就节
省了 cpu 计算资源。
if(i === 10){
console.log(i)
break
}
}
for(let j=1;j<=100;j++){
if(j===50){
console.log(50)
break
}
}
for(var k=1;k<=10;k++){
if(k===4){
// 终止当前循环 (continue 后面语句不会执行 ) ,继续执行后面的循环
continue
}
console.log(k)
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值