1. 一些基础知识
JavaScript
- 1995 年, 网景(Netscape), LiveScript -> JavaScript
- 1997 年, ECMA(欧洲计算机制造商协会)制定了一个前端的脚本标准:ECMA-262
- ECMA-262: ECMAScirpt
- ECMASCript 和 JavaScript 有什么关系呢?
- ECMAScript 是一个类, JavaScript 是这个类的一实现/实例
- 之前的用在前端的脚本语言比较多,微软 JScript…, 最后只剩下 JavaScrpt
- ECMAScript 2011: ES5 / ES5.1(本周我们学的就是这个版本)
- ECMAScript 2015: 就是大名鼎鼎ES6
JS 核心
- ECMAScript: 核心语法, 变量,流程控制, 对象,数组….
- DOM: 文档对象模型(html)
- BOM: 浏览器对象模型(Browser)
执行机制
宿主环境
- 执行环境/运行上下文
- 浏览器: Chrome / FireFox / Edge / 360….
- 服务器: Node.js, NPM(js 版 composer )
2. 异步
- 后段的异步执行是为了前端更快地加载或渲染 - 前端反而有可能是感觉同步了(同时渲染出来了)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--
1. 延迟
2. 异步
-->
<!-- async: 异步加载: 执行JS脚本,并不会暂停对当前HTML文档的解析。-->
<!-- <script src="test.js" async></script> -->
<title>JS加载模式: 延迟, 异步</title>
</head>
<body>
<!-- 浏览器对js的加载与解析默认是同步的 -->
<!-- <script src="test.js"></script> -->
<!-- 加载模式针对的是外部的脚本 -->
<h2>大家晚上吃饱了吗?</h2>
<!-- defer: 延迟加载,等当前的html文档全部渲染结束,再加载js脚本 -->
<!-- <script src="test.js" defer></script> -->
<!-- 只要把js脚本放在底部加载执行就OK -->
<script src="test.js"></script>
</body>
</html>
3. 基本语法
- php变量区分大小写,js也一样
- php中函数的命名不区分大小写,js中区分大小写的
- 变量的全局作用域
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>js与php的一点区别</title>
</head>
<body>
<script>
// js与php中的注释语法是一样的
// 1. 变量的声明与赋值
// php
// 这个不叫变量声明, 变量声明,变量名之前要有关键字
// 这个关键字用来定义变量的类型,作用域...
// php 没有变量声明,直接定义就可以用了
// $username = null;
// $username = "peter zhu";
// js变量必须使用var/let/const声明, 声明不是为了定义类型,而是为了绑定作用域
// 用默认值进行初始化, js变量如果未初始化, 默认用undefined
// var username;
// 用自定义的值进行初始化
var username = "朱老师";
// 更新/赋值
username = "川建国";
console.log(username);
// php变量区分大小写,js也一样
// console.log(userName);
// 赋值
// 第一次赋值: 初始化, 要么给一个自定义的值,要么系统给一个默认值
// 第二次更新: 将值更新,如果是动态语言, 它的类型也随着值的类型更新与改变
// 2. js中的函数语法与php基本一致
function getUserName(name) {
return "Hello " + name;
}
// console.log(getUserName("Peter Zhu"));
// php中函数的命名不区分大小写,js中区分大小写的
// define();
// DEFINE();
// 报错
// console.log(getUsername("Peter Zhu"));
// 变量声明补充
email = "peter_zhu@php.cn";
// 如果不添加var绑定作用域,该变量就会自动成为全局对象window属性
// var本身就是声明在函数外部, 外部就是全局作用域,所以site就是一个全局变量
var site = "php中文网";
// 带var的用delete删除不了,但不带的可以删除掉。
</script>
</body>
</html>