很久之前工作需要就使用过基础的JS,断断续续接触,但是一直没能继续深入。造成用到的时候学会一点,时间久一点就忘完了。今天再回头查漏补缺,把基础知识再看一下。
学习对象:非常好的自学网站:菜鸟教程:JavaScript 教程 | 菜鸟教程
下面我就挑选一些不熟悉的小节,一节一节的写笔记:
1. JavaScript 函数
JavaScript 函数 | 菜鸟教程
https://www.runoob.com/js/js-functions.html
小知识点:
- 函数的创建,使用关键字function要小写,因为js是大小写敏感的(和vba不一样),函数名(参数可选){函数语句们}
- 函数可以带参数: 函数名(参数可选,逗号隔开){函数语句们}
- 可以返回一个值给调用它的函数/或赋值语句:在{中使用return+变量或字符串/数值/逻辑值},
- 函数内声明的变量,作用域是函数内部,可以其他函数内部声明的重名。函数结束,就被删除;另外全局变量是网页关闭才被删除。
- 非严格模式下,未声明变量赋值,会成为window的属性,可以被删除。【这里没有完全明白。特别是变量删除的知识。】
function myFunction(a,b) { return a*b; } document.getElementById("demo").innerHTML=myFunction(4,3);//返回值给赋值语句 // var var1 = 1; // 不可配置全局属性 var2 = 2; // 没有使用 var 声明,可配置全局属性 console.log(this.var1); // 1 console.log(window.var1); // 1 console.log(window.var2); // 2 delete var1; //false 无法删除 //【 经张恒测试:无提示,如果加上严格模式语句,运行到这里报错】 console.log(var1); //1 delete var2; console.log(delete var2); // true console.log(var2); // 已经删除 报错变量未定义
2.作用域
JavaScript 作用域 | 菜鸟教程
https://www.runoob.com/js/js-scope.html
作用域就是“作用域为可访问变量,对象,函数的集合。”
- 函数内声明的变量作用域是当前函数内,函数内访问使用;函数执行完销毁;
- 函数的参数(括号内的参数以逗号隔开的)也算式函数内声明,作用域为函数内;
- 函数外声明的变量作用域是全局,所有函数表达式都可以使用;网页关闭销毁;
function myFunction() { carName = "Volvo"; //这里赋值,虽然是函数内第一次出现,但是属于非严格模式下,未声明赋值,根据上面一节javascript函数中的说法,这是全局变量 } alert(carName);//这里会弹窗提示“Volvo” function myFunction() { var carName; //这里声明是在函数内,属于局部变量,外部无法访问 carName = "Volvo"; //赋值, } alert(carName);//这里会报错
3.事件
JavaScript 事件 | 菜鸟教程
https://www.runoob.com/js/js-events.html
这里我们直接复制菜鸟教程的内容:常见的HTML事件
下面是一些常见的HTML事件的列表:
事件 | 描述 |
---|---|
onchange | HTML 元素改变 |
onclick | 用户点击 HTML 元素 |
onmouseover | 鼠标指针移动到指定的元素上时发生 |
onmouseout | 用户从一个 HTML 元素上移开鼠标时发生 |
onkeydown | 用户按下键盘按键 |
onload | 浏览器已完成页面的加载 |
更多事件列表: JavaScript 参考手册 – HTML DOM 事件。
4.严格模式
JavaScript 严格模式(use strict) | 菜鸟教程
https://www.runoob.com/js/js-strict.html
在代码开始写上”use strict”;
严格模式下的限制:
- 未声明不能使用
- 不能删除变量(包括对象和函数)
- 不能重命名变量
- 变量名不能使用 “eval””arguments”字符串:
- 不能赋值给只读属性和getter才能访问的属性
- 不允许删除一个不允许删除的属性
- 由于一些安全原因,在作用域 eval() 创建的变量不能被调用
- 禁止this关键字指向全局对象
- 不能使用八进制
- 不允许使用以下这种语句:with (Math){x = cos(2)}; // 报错
- 不允许使用转义字符
新增保留字
implements
interface
let
package
private
protected
public
static
yield