很久之前工作需要就使用过基础的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”字符串:
  1. 不能赋值给只读属性和getter才能访问的属性
  2. 不允许删除一个不允许删除的属性
  3. 由于一些安全原因,在作用域 eval() 创建的变量不能被调用
  4. 禁止this关键字指向全局对象
  • 不能使用八进制
  • 不允许使用以下这种语句:with (Math){x = cos(2)}; // 报错
  • 不允许使用转义字符

新增保留字

implements
interface
let
package
private
protected
public
static
yield



扫一扫 手机查看

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注