一、简述
JavaScript是用来实现浏览器和用户交互的,与html和css不同,它是门弱类型编程语言。
二、引入方式
1、内部标签
<script>
代码块
</script>
2、外部引入
<script src="js文件路径"></script>
三、基础语法
1、变量类型
定义变量
所有的变量默认用var定义,var是任意的变量类型,如:
var aaa=1;
var bbb='abc';
在ES6中,建议局部变量用let定义。
let i = 1;
基本类型
- number(数值):js不区分实型和浮点型
NaN表示不是数值
Infinity表示js接收不了的一个极大的数 - 字符串:
'aaa'
"aaa"
- 布尔值:
true
false
- 逻辑运算符:
&&
(与)||
(或)!
(非) - 比较运算符:
==
(值一样)===
(类型和值都一样)
NaN与所有数值都不===,包括自己。
浮点数存在精度问题,尽量避免比较,计算机会把无限小数约作和它差别很小的有限小数。 - 空指针:
null
空(定义了,但没有值)undefined
未定义 - 数组:同样用var定义,可以不是同一类型的元素,尽量使用[ ]。
- 对象:用{ },类似于:
var Person{
键1:值1,
键2:值2,
键3:值3
}
取对象的值,用对象名.键
,得到值
。
2、流程控制
- if 和 else if
- while 和 do-while
- for
- switch
3、特殊函数
/*弹窗*/
alert("message text");//参数为弹窗显示文本
4、调试
console.log(变量);
可以在控制台调试,用浏览器打开网页->检查->console
像我这里,网页的js代码里有这么一句
var num = 1;
四、严格检查模式
//严格检查模式
'use strict';
//代码不规范,会报错
//i = 1;
//规范定义变量
let i = 1;
必须写在第一行!
五、字符串详解
- 正常的字符串用
' '
或" "
包裹 - 一般符号用
\
转义 - 一般的转义字符通用
- 可以输出Unicode字符和ASCII字符
- Esc键下面的那个小点可以跨行包裹字符串
- 字符串不可变
1、模板字符串
let name = 'Tom';
let msg = `Hello,${name}!`;
console.log(msg);
//用` `包裹的字符串可以用el表达式拼接,注意不是''单引号,是``esc下面那个键
2、字符串属性
- 字符串长度:str.length
- 下标取值:str[0]
- 全变大写:str.toUpperCase()
- 全变小写:str.toLowerCase()
- 找到某个字符串(a)第一次出现的下标:str.indexOf(‘a’)
- 截取一段( [2,5) -> 2、3、4 )字符串:str.substring(2,5) ,第二个参数不填就是截取到最后一个字符
六、数组详解
- 可以包含任意类型
var arr = [1,2,3,'a',"b",true];
- 长度(可被赋值修改,赋值过小元素就会丢失)
arr.length;
- 通过下标取值和赋值
- 数组切片
//等价于字符串substring()的用法
arr.slice(3);//第4个到最后
arr.slice(3,5);//第4、5个
- 压、弹(尾部)
//类似于c压栈和弹出的操作
arr.push('a','b');//返回数组长度
arr.pop();//删除最后一个元素
- 压、弹(头部)
arr.unshift('a','b');
arr.shift();
- 排序
arr.sort();
- 逆序
arr.reverse();
- 拼接
//arr1拼在arr后面
arr.conact(arr1);
- 连接
//用 - 把所有元素连接起来
//将连接成的字符串打印出来
arr.join('-');
- 有多维数组的概念
七、对象详解
- 赋值
str.a = 1;
- 调用一个不存在的属性,不会报错,会认为你还没定义,输出undefined
- 动态增删属性
//删除a属性
delete str.a;
//增加b属性
str.b = 'b';
- 判断属性是否在对象中
属性 in 对象;
//返回true或者false
- 判断某个字段而不是对象定义的时候系统自带的方法,属不属于对象
str.hasOwnProperty(field);