目录
初识 JavaScript
JavaScript 是什么
发展历史
JavaScript 和 HTML 和 CSS 之间的关系
JavaScript 运行过程
JavaScript 的组成
前置知识
JavaScript 的书写形式
1. 行内式
2. 内嵌式
3. 外部式
注释
输入输出
输入: prompt
输出: alert
选择框:confirm
输出: console.log
语法概览
变量的使用
基本用法
理解 动态类型
基本数据类型
number 数字类型
数字进制表示
特殊的数字值
string 字符串类型
基本规则
转义字符
求长度
字符串拼接
boolean 布尔类型
undefined 未定义数据类型
null 空值类型
运算符
算术运算符
赋值运算符 & 复合赋值运算符
自增自减运算符
比较运算符
逻辑运算符
位运算
移位运算
条件语句
if 语句
三元表达式
switch
循环语句
while 循环
continue
break
for 循环
数组
创建数组
获取数组元素
新增数组元素
删除数组中的元素
函数
语法格式
关于参数个数
函数表达式
作用域
作用域链
对象
基本概念
1. 使用 字面量 创建对象 [常用]
2. 使用 new Object 创建对象
3. 使用 构造函数 创建对象
JavaScript 最初只是为了完成简单的表单验证(验证数据合法性), 结果后来不小心就火了.
当前 JavaScript 已经成为了一个通用的编程语言
JavaScript 之父 布兰登 * 艾奇 (Brendan Eich)
1995 年, 用 10 天时间完成 JS 的设计 (由于设计时间太短,语言的一些细节考虑得不够严谨,导致 后来很长一段时间,Javascript 写出来的程序混乱不堪)
最初在网景公司, 命名为 LiveScript,
一般认为,当时 Netscape 之所以将 LiveScript 命名为 JavaScript,是因为 Java 是当时最流行的 编程语言,带有 "Java" 的名字有助于这门新生语言的传播。
其实 Java 和 JavaScript 之间的语法风格相去甚远。
光有 JS 语法, 只能写一些基础的逻辑流程.
但是要想完成更复杂的任务, 完成和浏览器以及页面的交互, 那么久需要 DOM API 和 BOM API.
重要概念: ECMAScript
这是一套 "标准", 无论是啥样的 JS 引擎都要遵守这个标准来实现.
alert("hehe");
这种情况下 script 标签中间不能写代码. 必须空着(写了代码也不会执行).
单行注释 // [建议使用]
多行注释 /* */
// 弹出一个输入框
prompt("请输入您的姓名:");
// 弹出一个输出框
alert("hello");
弹出一个选择对话框,确认或取消
// 弹出选择框
confirm("确认删除吗?");
// 向控制台输出日志
console.log("这是一条日志");
需要打开浏览器的开发者工具(F12) => Console 标签页 才能看到结果.
JavaScript 虽然一些设计理念和 Java 相去甚远, 但是在基础语法层面上还是有一些相似之处的. 有了Java 的基础很容易理解 JavaScript 的一些基本语法.
创建变量(变量定义/变量声明/变量初始化)
var name = 'zhangsan';
var age = 20;
console.log(age); // 读取变量内容
age = 30; // 修改变量内容
var a = 10; // 数字
var b = "hehe"; // 字符串
var a = 10; // 数字
a = "hehe"; // 字符串
JS 中不区分整数和浮点数, 统一都使用 "数字类型" 来表示。
var a = 07; // 八进制整数, 以 0 开头
var b = 0xa; // 十六进制整数, 以 0x 开头
var c = 0b10; // 二进制整数, 以 0b 开头
var max = Number.MAX_VALUE;
// 得到 Infinity
console.log(max * 2);
// 得到 -Infinity
console.log(-max * 2);
// 得到 NaN
console.log('hehe' - 10);
字符串字面值需要使用引号引起来, 单引号双引号均可。
如果字符串中本来已经包含引号需要使用转义字符。
表示 "真" 和 "假"
var a;
console.log(a)
console.log(a + "10"); // undefined10
console.log(a + 10);
null 表示当前的变量是一个 "空值".
var b = null;
console.log(b + 10); // 10
console.log(b + "10"); // null10
// 形式1
if (条件) {
语句
}
// 形式2
if (条件) {
语句1
} else {
语句2
}
// 形式3
if (条件1) {
语句1
} else if (条件2) {
语句2
} else if .... {
语句...
} else {
语句N
}
条件 ? 表达式1 : 表达式2
switch (表达式) {
case 值1:
语句1;
break;
case 值2:
语句2:
break;
default:
语句N;
}
while (条件) {
循环体;
}
for (表达式1; 表达式2; 表达式3) {
循环体
}
// Array 的 A 要大写
var arr = new Array();
var arr = [];
var arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为 "元素"
var arr = [9, 5, 2, 7, 3, 6, 8];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
newArr.push(arr[i]);
}
var arr = [9, 5, 2, 7];
// 第一个参数表示从下表为 2 的位置开始删除. 第二个参数表示要删除的元素个数是 1 个
arr.splice(2, 1);
console.log(arr);
// 结果
[9, 5, 7]
// 创建函数/函数声明/函数定义
function 函数名(形参列表) {
函数体
return 返回值;
}
// 函数调用
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值
实参和形参之间的个数可以不匹配. 但是实际开发一般要求形参和实参个数要匹配
另外一种函数的定义方式
var add = function() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(add(10, 20)); // 30
console.log(add(1, 2, 3, 4)); // 10
console.log(typeof add); // function
某个标识符名字在代码中的有效范围.
在 ES6 标准之前, 作用域主要分成两个
对象是指一个具体的事物
在 JS 中, 字符串, 数值, 数组, 函数都是对象.
JavaScript 的对象 和 Java 的对象概念上基本一致. 只是具体的语法表项形式差别较大.
var student = new Object(); // 和创建数组类似
student.name = "蔡徐坤";
student.height = 175;
student['weight'] = 170;
student.sayHello = function () {
console.log("hello");
}
前面的创建对象方式只能创建一个对象. 而使用构造函数可以很方便 的创建 多个对象
function 构造函数名(形参) {
this.属性 = 值;
this.方法 = function...
}
var obj = new 构造函数名(实参);