JS语法详细解释(JavaScript大总结)
JavaScript
- 是一种脚本语言
- 具有跨平台特点
- 主要环境为各种浏览器
JS和Java两者比较
比较 | JavaScrip | Java |
发布公司 | Netscape | Sun |
功能目的 | 扩展浏览器功能 | 面向对象程序设计语言 |
基本对象 | 丰富的内部函数 | 必须定义类 |
执行方式 | 无需编译,浏览器解释执行 | 必须先编译,生成字节码,然后Java虚拟机运行字节码 |
声明方式 | 弱类型变量语言 | 强类型变量语言 |
代码格式 | 文本字符格式,可嵌入HTML文档中 | 必须外部引用进行装载 |
JS文件方法
在默认情况下,当浏览器解析网页时,解析到
<script src="引用JS文件名.js"></script>
//defer:当页面加载完毕后执行JS脚本
<script src="引用JS文件名.js" defer></script>
//async:JS脚本在页面加载过程中执行,执行JS脚本内容
<script src="脚本名.js" async></script>
当浏览器不支持或者禁用JavaScript时,显示提示信息
<noscript>
<h1>JavaScript功能不支持或者禁用</h1>
</nosrcript>
JS数据类型和变量
数据变量定义方式
- 隐式定义:直接变量赋值
- 显示定义:使用var关键字
注意:JS中变量名区分大小写
a="隐式定义";
var b="显示定义";
var i,j=0,k="多变量初始化";
变量类型转化
值 | 目标类型 |
值 | 字符串类型 | 数值型 | 布尔型 | 对象 |
undefined | “undefined” | NaN | false | Error |
null | “null” | 0 | false | Error |
字符串 | 不变 | 数值或者NaN | true | String |
空字符串 | 不变 | 0 | false | String |
0 | “0” | 0 | false | Number |
NaN | “NaN” | NaN | false | Number |
Infinity | “Infinity” | Infinity | true | Number |
-Infinity | “-Infinity” | -Infinity | true | Number |
数值 | 对应字符串 | 不变 | true | Number |
true | “true” | 1 | 不变 | Boolean |
false | “false” | 0 | 不变 | Boolean |
类型强转换:
toString()转换为字符串
parselnt()转换为整型
parseFloat()转化为浮点数
变量作用域
- 全局变量:全部脚本都可以访问
- 局部变量:只有函数内可以访问
局部函数中使用Var定义的变量是局部变量
<script>
//局部变量覆盖全局变量
var test="全局变量";
function checkScope{
var test="局部变量";
alert(test)
}
checkScope();
alert(test);
</script>
判断类型并执行循环
<script>
function test(a){
var i=0;
//当过程参数a使用typeof判断类型是否为objcet
if(typeof a=="objcet"){
for(var i=0;i<10;i++){
document.write(i);
}
}
alter(i+"循环结束依然存在");
}
test(document);
</script>
变量提升
定义全局变量后,过程中直接引用全局变量,则声明变量语句提升至引用语句前,提示undefined;
定义变量关键字
var 定义无块变量
let 定义有块变量
const 常变量
基本数据类型
- 数值类型:包含整数和浮点数
- 布尔类型:false和true
- 字符类型:必须用引号括起来
- undefined类型:没有初始值
- null类型:变量值空
科学计数法
- 1.23e-3和1.23E-3
- 十进制不要以0开头;
- 十六进制以0x或者0X开头,9以上数字以a~f表示;
- 八进制以0开头,包含0~7;
- infinity正无穷
- infinity负无穷
- NaN不会与任何数值变量相等;
- 判断函数是否为NaN:isNaN()
字符串操作函数
String()构建一个字符串
charAt()获取字符串索引处字符
charCodeAt()返回字符串特定索引处对应的unicode值
length()返回字符串长度
toUpperCase()转换为大写字母
toLowerCase()转化为小写字母
fromCharCode()将Unicode值转化为字符串
indexOf()指定字符第一次出现位置
lastIndexOf()指定字符最后一次出现位置
substring()返回特定子串
slice()返回子串,比substring()更为强大
match()使用正则表达式搜索目标子串
search()使用正则表达式搜索目标子串
concat()多个子串合并为一个子串
split()将字符串分割为多个子串
replace()字符串中指定字符被替代
substring()和slice()格式
- substring(开始,[结束])从开始处,截取到结束;其中包含开始字符,不包含结束字符。
- slice(开始,[结束]) 最大区别是可以接受负数缩影,负数为右边开始
<script>
var s="abcdefg";
//结果为7
var count=s.length;
//unicode97值为a
var c=String.fromCharCode(97);
//c在字符串中位置为3,初始为1
var d=s.indexOf("c");
//没有查到,输出为-1
var e=s.indexOf("c",4);
//e的位置为4,初始为0
var f=s.lastIndexOf("e");
//abcd
var g=s.slice(0,4);
//cd
var h=s.slice(2,4);
//def从第四个字符开始到倒数第一个字符结束
var i=s.slice(3,-1);
</script>
转义字符
- \b退格
- \t表示一个tab
- \n换行回车
- \v垂直制表位
- \r回车
- "双引号
- '单引号
- \反斜线
正则表达式
正则表达式“合法字符”
字符 | 解释 |
x | 字符x |
\ommm | 八进制mmm |
\xhh | 十六进制hh |
\uhhh | 十六进制hhh |
\t | 制表位 |
\n | 换行符 |
\r | 回车符 |
\f | 换页符 |
\a | 报警符 |
\e | Escape符 |
\cx | x对应的控制符:例如\cM表示Ctrl+M,其中x值必须是字母 |
正则表达式“通配符”
预定义字符 | 说明 |
\d | 匹配0~9 |
\D | 匹配非数字 |
\s | 匹配所有空白字符 |
\S | 匹配所有非空白字符 |
\w | 所有字符 |
\W | 所有非字符 |
[]表示法 | [a-z]a~z之间;[axy]表示a,x,y表示三个字符任意字符 |
$ | 结尾 |
^ | 开头 |
正则表达式“频率符”
特殊字符 | 说明 |
? | 零次或者一次 |
* | 零次或者多次 |
{m,n} | 至少出现m次,最多出现n次 |
| 互斥条件 | ((abc)|(efg)) |