js: JavaScript的简称
1.1 js的版本:ES5,ECAA2015,也就是大家常说的ES6
1.2 ECMA2016,ECMA2017,….ECMA2020
1.3 ES6+,ES6是一个大的概念
JS:是异步的单线程的脚本语言
2.1 脚本:边解释边执行,控制台是一个浏览器内置的JS代码的解释执行程序
2.2 脚本语言(php,python..),动态解释并直接执行
2.3 编译语言(c/c++/java…),静态编译的语言
单线程:就是同一个时间执行一个任务(不能并发),一旦遇到非常耗时的任务,就会阻塞。
异步:js是基于时间驱动的语言,通过事件循环来完成
4.1 事件回调方法并不会马上执行,他依赖于某个时间的到来 这些事件
4.2 的回调方法在“任务队列”中等着
setTimeout(); 定时器
console.log(); 可以在浏览器查看打印结果
主线程中的程序:
console.log(1);
console.log(3);
console.log(5)
回调中又
setTimeout(()=>console.log(2));
setTimeout(()=>console.log(4));
这样会慢半拍,原因是内容输出是在主线程上执行
<input tyoe="text" onkeydown="console.log(this.value)">
此时,将内容输出到控制台的代码不在主线程执行,而是在任务队列中
<input type="text" onkeydown="setTimeout(()=>console.log(this.value))>
<buttononclick="console.log(this.innerHTML);this.style.background='red></buttton>
<script src="地址"></script>
<button>点我</button>
<script>
//仅在当前html文档中使用js代码
const btn = document.querySelector('button');
btn addEventListener('click',show);
function show(ev){
console.log(ev.target.innerHTML);
ev.target.style.background = "linghtsky';
}
// 声明
let username;
// 认值: undefined
console.log(username);
// 初始化:第一次赋值
usernmae = "张三";
console.log(usernmae);
// 更新,第二次以上的赋值
username = "李四”;
console.log(username);
// let 禁止重复声明
// 将变量与初始化同步完成
// 变量是可以将声明与初始化分成两步完成
let emali="20000@qq.com"
const APP="管理系统”;
// 蛇形
let user_name="zhangsan";
// 驼峰式
let userName="lisi;
// 大驼峰,帕斯卡
let UserName="xiaoming";
// 匈牙利
let oBody = document.body;
oBody.style.background ="red";
原始类型: 都是值传递
// 数值: 整数和小数
let age = 38;
console.log(age,typeof age);
// 字符串
let emali = "2000@qq.com";
console.log(emali,typeof email);
// 布尔
let isMarried = true;
console.log(isMarried,typeof isMarried);
// undefined 未初始化变量的类型
let gender;
console.log(gender,typeof gender);
// null, 空对象
let obj = null;
console.log(obj,typeof null);
// 符号,创建对象属性的唯一标识
let s Symbol('custom symbol');
console.log(s,typeof s);
// 原始类型都是值传递的
let a = 100;
// 将变量的a的值,传递到了b;
let b = a;
console.log(b);
let a = 200;\
console.log(b);
// a的更新不会影响到b
1.1 他们都是引用传递
1.2 对象字面量
对象字面量
let user = {
// 属性,相当于变量
id:1,
name:'lisi',
'my email':'ty@qq.con',
// 方法:函数
getName:function(){
//this表示当前的上下文,当前对象
return '我的名字:'+ this.name;
}
}
console.log(user.id,user.name);
console.log(user['my email']);
console.log(user.getName());
数组
let course = [1,'js',88];
console.log(conrse,typeof couyse);
// 正常情况下,检查数组返回对象
console.log(course instanceof Array);
console.log(course instanceof object);
//不用上面的 instanceof ,以后可以使用isAarray
console.log(Array.isArray(conuse));
// 数组中的元素索引是从0 开始,按索引来访问元素
console.log(course[1]);
函数
function hello(){}
console.log(hello,typeof hello);
console.log(hello,instanceof Object);
// 对象是属性的无序集合,对象可以添加属性
hello.email = '2000@qq.cn';
console.log(hello.email);
//