何为js?
javascri简称js。js是异步的单线程的脚本语言。
- 单线程:就是同一个时间只执行一个任务(不能并发) 一旦遇到非常耗时的任务,就会出现阻塞(卡死)
- 主线程 和任务队列
事件回调方法会放到任务队列中执行,实现异步,来解决线程阻塞问题
事件回调方法并不会马上执行,它依赖于某个事件的到来。
这些事件的回调方法在任务队列中等着
等主线程的代码全部执行完毕之后
由事件循环将他压入到主线程执行
js的引入方式
1.直接写到html的事件属性中
<button onclick="show(this)">click me</button>
<script>
function show(ele){ console.log(ele.innerHTML);
}
</script>
2.外部脚本,将js保存为一个单独的js文件,再通过scripte标签引入
3.如果这个js脚本只在当前html中使用则在script标签内写代码
js常量和变量
传统方式:传统js没有常量,且变量可以重复声明。var声明变量,常量。这种方式已经淘汰了。使用let来声明
- 变量
声明变量:let name;
初始化赋值: name=’名字’;
更新赋值:name=”小明”;
console.log(name);
注意:let 用来声明变量同时禁止重复声明变量。 常量
常量是特殊的变量,相当于只读的变量
常量声明后既不能删除,也不能赋值。
const NAME=’小红’;
常量和变量,函数名都叫js标识符
命名规范:能字母,数字,下划线,$ 且第一个不能是数字。标识符是严格区分大小写
蛇形+下划线:
let user_name=”jacke”;
驼峰式:
let userName=”李小龙”;
大驼峰式:
let UserName=”独孤求败”;
匈牙利式:
let oBody; o表示 object数据类型
数据类型分为两类:原始类型和引用类型
原始类型:
1.数值:整数和小数
let age=45;
console.log(age,typeof age);
2.字符串:
let name=”jacke”;
console.log(name,typeof name);
3.布尔值true和false两个值
let isMarried=false;
4.undefined未定义
let email;
consloe.log(email,typeof email);
5.null 空对象
let obj=null;
6.符号,创建对象属性的以为标识
let s=symbol;
console.log(s,typeof s);
总结:原始类型都是值传递的,两个变量赋值操作后,有各自的存储空间,互不影响。引用类型: 对象,数组,函数
他们都是引用传递:两个数组的内存地址是相同的,改变一个另一个也改变<script>
let a=['js','java','script'];
let b=a;
a[2]='php';
console.log(b);
</script>
数组b的值也改变了。这就是引用传递。