JS认识
- js是异步的单线程脚本语言
- 运行方式:主线程方式运行,同时存在事件处理程序,事件回调方法需要等主线程代码全部执行完毕后,由事件循环将它压入到主线程执行
JS引入方式
- 属性级:事件属性
- 标签级:script标签
- script标签的src属性引入
变量与常量的声明与赋值
js中申明常量和变量的方式有以下几种
传统js没有常量,且变量可以重复申明
var
声明变量,且可以重复声明,定义的变量可以修改,如果不初始化会输出undefined,不会报错。let
声明变量,禁止重复声明,是块级作用域,函数内部使用let定义后,对函数外部无影响const
声明的变量不可以修改,且声明与初始化必须同步完成,常用于申明常量使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>变量与常量</title>
</head>
<body>
<script>
let username;
console.log(username);
// 初始化:第一次赋值
username = '百万弟弟';
console.log(username);
// 更新:第二次以上的赋值
username = '你好';
console.log(username);
// let 禁止重复声明
// 变量可以将声明与初始化分成两步
// 常量是特殊的变量:只读变量
// 常量声明后既不能删除,也不能更新
// 常量声明与初始化必须同步完成,
const name = 'PHP中文网';
console.log(name);
</script>
</body>
</html>
数据类型
原始类型,值传递
- 数值:整数和小数(number)
let age = 30;
console.log(age,typeof age);
- 字符串(string)
let email = '18332818@qq.com';
console.log(email,typeof email)
- 布尔(boolean)
let isMarried = true;
console.log(isMarried,typeof isMarried);
- undefined,未初始化变量的默认值(undefined)
let email = '18332818@qq.com';
console.log(email,typeof email)
- null,空对象(object)
let obj= null;
console.log(obj,typeof obj);
- 符号类型,创建对象属性的唯一标识(symbol)
let s = Symbol();
console.log(s,typeof s);
引用类型,引用传递
- 对象
let user = {
id: 1,
name:'百万弟弟',
'my email':'183332818@qq.com',
getName:function(){
return '我的名字:'+this.name
}
}
//访问对象属性
console.log(user.id,user.name,user.getName);
//访问带空格属性
console.log(user['my email']);
//访问对象函数
console.log(user.getName());
- 数组
let course = [1,'js',88];
// 检查是否为数组
console.log(Array.isArray(course));
console.log(course[2]);
- 函数
function hello(){}
console.log(hello,typeof hello);
// 添加属性
hello.email = 'php@php.cn';
console.log(hello.email);