1、JavaScript概述
1、什么时js
是一种专门运行于js解释器
引擎中的解释型脚本语言
2、JS发展史
1、1992年CMM(C--),更名为ScriptEase
2、1995年LiveScript,更名为JavaScript
3、1996年JScript
3、JS的组成
1、核心 ECMA Script
包含了JS中最基本的语法规范
2、浏览器对象模型 - BOM
Browser Object Mode;
允许JS操作浏览器
3、文档对象模型 -- DOM
Document Object Model
允许JS操作HTML的内容
2、JS的使用方式(重点)
1、浏览器控制台中输入代码并执行(测试时使用)
测试时使用
console.log("我的第一个js程序");
2、JS的使用方式
1、在元素事件中编写JS代码
事件:是用户在元素上所激发的一些操作
onclick:当用户点击元素时要做的操作
语法:
<ANY(任何元素) onlick = "js执行代码">
<button onclick="console.log('点你');">点我试试</button>
2、将代码嵌入在网页的<script></script>标记中
在网页的任意位置处,都可以嵌入一个<script></script>标记
语法:
<script)
JS可执行代码
</script>
注意: 1、一个网页中允许有若干多对 script
2、script 标记有顺序之分,先写的先被执行
3、网页加载时就执行
document.write("<h1>想网页中输出的一句话 </h1>")
window.alert("弹出弹窗")
window.prompt("弹窗里面输入内容"); 数据类型字符串
3、在网页中,引入外部的JS文件(最常用的)
1、创建一个JS文件(xxx.js),并编写js代码
2、在网页上对js文件进行引入<script src = "js文件路径"></script>
注意:1、script标记必须成对
2、在引入的标记中,不允许编写其他的JS脚本
3、JS的基础语法
1、JS都是由语句组成的
1、由运算符、关键字 或 表达式组成
2、JS中严格区分大小写
3、每条语句必须以 ; 表示结束
2、注释
单行注释: //
多行注释: /* */
4、JS中的变量和常量
1、声明变量
声明: var 变量名;
赋值: 变量名 = 值;
声明并赋值:var 变量名 = 值;
eg: var uname = "小明";
console.log(uname);
多个变量声明:
var uname="Jack", uage=35;
注意:
1、声明变量时,尽量使用Var关键字,如果省略,也可以,但容易出问题。
2、声明变量如果未赋值的话,默认值为 undefined
3、使用未声明过的变量的话,则语法错误。只影响当前块的执行。
2、变量名的命名规范
1、变量名不能是JS中的关键字或保留关键字
2、由字母,数字,下划线_,以及 $ 组成。
3、数字不能开头。
4、尽量不要重复,会替换。
5、尽量要见名知意
6、如无特殊需求的话,尽量使用小驼峰命名法。 eg:userName
强调:不能使用name作为变量名。
3、变量的使用
1、为变量赋值
只要变量出现在赋值符号的左边,一律是赋值操作。
2、获取变量的值
只要变量没出先赋值左边一律是取值。
4、常量
1、什么是常量 一经声明就不允许被修改的数据就是常量。
2、语法
const 常量名 = 值;
注意:1、一旦声明不能修改,所以一定要要赋初始值。
2、常量通常采用全大写形式。
5、精度丢失:保留到n位小数
var r = 3.1415926;
r = r.toFixed(n); 保留n位小数。
6、数据类型
JS中的数据类型可以分为两大类
查看数据类型: typeof() 或 typeof 查看变量的数据类型。
var str = "hello"; typeof(str); typeof str
1、基本数据类型
1、number 类型
数字类型,可以表示32位的整数以及64位的浮点数
整数: 十进制 :var num = 30;
八进制 :var num = 010;
十六进制 : var num = 0x21;
注意:以上数字再打印的时候都是按照十进制值进行打印输出的。
小数:小数点计数法:var num = 123.456;
制数计数法:var num = 1.4e2;
2、string 类型
字符串类型:
注意:使用时,必须使用 "" 或 '' 引起来
JS中的字符串由Unicode字符,数字,标点组成。
1、查看字符的Unicode码
var str = "张";
str.charCodeAt(); 打印当前对应字符的十进制编码。
str.charCodeAt().toString(16);编码转换成16进制。
var str = "张三丰";多个字符查找编码
str.charCodeAt(2).toString(16); 查“丰”字的。
2、如何将Unicode码转换成对应的字符?
var str = "\u5f20"; \u 转换成对应的字符,16进制,必须4位。
3、中文范围
"\u4e00" ~ "\u9fa5"
4、转义字符
\n: 换行 \t: 制表符 八个字格
\': ' \": " 单双引号
\\: \
注意:document.write("Hello<br/>world!"); 换行,不要用\n
无法正常解析。
5、属性
length:返回当前字符串的长度
6、String API
1、大小写转换函数 toUpperCase() toLowerCase()
2、去掉字符串两端空格:trim(),不会改变现有字符串。
3、获取指定位置的字符:charAt(index);
获取指定位置字符的Unicode码:charCodeAt(index)
4、检索字符串
indexOf(value,fromIndex)
value:查找的子字符串
fromIndex:从哪个位置处开始查找,如果省略,从头开始。
返回值:第一次出现下标,负责返回-1
lastIndexOf(value,fromIndex)
作用:查找最后一次出现的下标。
注意:该函数的查找方式是从后向前找。
5、截取子字符串
函数:substring(start,end)
作用:返回从start到end-1之间的字符串,如果省略end,截取到尾部。
6、分割字符串
作用:将具备特殊连接符的字符串拆成字符串数组。
函数:split(seperator)
7、模式匹配
作用:配合子字符串和正则表达式完成字符串的查找,替换。
2、正则表达式: /正则表达式/修饰符
修饰符:i:ignorecase(忽略大小写)
g:global(全局匹配)
m:multiple(允许多行匹配)
3、函数
1、replace(substr/regexp,replacement)
在一个字符串中,将substr或满足regexp格式的字符串换成replacement
<script>
var src = "你大爷的,去你大爷的,大爷的。";
var reg = /大爷/gi;
var src2 = src.replace(reg,"**");
console.log(src2);
</script>
2、match(substr/regexp)
按照指定的字符串或正则表达式匹配,并返回满足格式的字符串数组。
var arr = str.match("大爷");//统计共有多少个大爷
3、boolean 类型
布尔类型,只用于表示真(true)或假(false)
注意:boolean类型可以参与到数字运算中,true 1,false 0
2、引用数据类型
7、数据类型转换
1、隐式转换
大部分加法运算时,如果数据类型不一致的的话可以进行。
隐式转换
1、数字 + 字符串: 默认将数字转换为字符串。
eg: var num = 18; //number
var str = "15"; //string
var r = num + str; //1518
注意: var r = "15" + 18 + 15; // 151815
var r = 15 + 18 + "15"; // 3315
2、数字 + 布尔: 将布尔类型转换为number
eg:var r = 35 + trye; //36
3、字符串 + 布尔: 将布尔类型转换为字符串(true,false)
var r = "你好" + true; //你好true
4、布尔 + 布尔:将布尔先转换成number在运算。
var r = true + true; //2
注意:
如果 - ,*,/,% 两端都是数字格式的字符串的话,是可以按照数字
的方式进行运算的。
"35" - "48" = -13
2、显示转换
1、toString()
作用:将任意类型的数据转换成字符串,并返回转换后的结果。
eg: var num = 15; // number
var r = num.toString(); //String
简便方法:var num = 15;
var r = num + "";
2、parseInt()
作用:将任意类型的数据尽量转换成整数,如果实在无法转换的话,
则返回NaN。碰见第一个非整数字符停止转换。
eg: var str = "13";
var r = parseInt(str); //number
var r = parseInt("13.56"); //13
var r = parseInt("hello"); //NaN
var r = parseInt("13hello");//13
var r = parseInt("你好12"); //NaN
3、parseFloat()
作用:尽量将任意类型的数据转换为小数。
相对于parseInt可以多转换一个小数点,碰到其他字符停止。
var r = parseFloat("5.fd");// 5
var r = parseFloat("5.3fd");// 5.3
var r = parseFloat(".3fd");// 0.3
var r = parseFloat(".fd");// NaN
4、Number()
作用:将指定的数据转换成数字,只要包含非法字符的话,为NaN
var r = Number("35.5"); // 35.5
var r = Number("35.5你好"); // NaN
5、运算符
1、算数运算符
+ : 加法,拼接
- : 减法
*
/ :5/2 结果:2.5
% :3%5 结果 3 获取数字的最后即为,倍数,奇偶性。
++(自增) 在自身数据基础上加1
--(自减) 在自身数据基础上减1
语法: 变量 ++ : 要先使用变量的值,在对变量进行自增。
var num = 5; num ++;5 先输出num的值,在num+1;
++变量 :先对变量进行自增,在使用变量的值。
6、流程控制
1、循环
1、循环的流程控制
break:
在循环体内使用,用于跳出整个循环结构
continue:
在循环体内使用,用于跳出本次循环,继续执行下次循环。
2、for 循环
for(表达式1;表达式2;表达式3){
循环体;
}
表达式1: 循环条件的初始化
表达式2: 循环条件的判断
表达式3: 循环的更新
循环体: 循环操作
3、for VS while
1、相同
先判断条件,在执行循环操作
2、不同
while:有限使用在不确定循环次数的场合下
for:有限使用在确定循环次数的场合下。
4、循环的嵌套
允许在一个循环的内部再出现一个循环。
外层循环走一次,内层循环走一轮。