JS 基础-入门实例(变量、常量、函数、作用域)
程序员文章站
2024-01-04 11:23:58
...
JS 基础-入门实例
1、TODO 代码中的成员: 数据、操作
-
数据
: 字面量=>直接可以看到值;变量
=>实现数据复用,将字面量缓存起来的容器; - “复用”, 必须要有 2 个步骤:声明、执行赋值=>第一次叫:初始化;第二次赋值叫更新 / 修改;
- 变量禁止重复声明。
1.1 变量
STT | 语法 | 说明 |
---|---|---|
1 | let name |
声明,let 关键字 |
2 | name = Help |
赋值 |
3 | console.log(name); |
按名调用 |
4 | name = null |
删除 ,赋值为 null |
1.2 函数
- 操作:操作写到
代码块
中;代码块: 一段由大括号 {...}
包裹的代码; - 使用代码块的目是为了
代码复用
;
STT | 语法 | 说明 |
---|---|---|
1 | fuction |
声明,function 关键字 |
2 | sum() |
函数名 |
3 | (a, b) |
参数 |
4 | {...} |
函数体 |
5 | sum(1, 2) |
按名调用 |
2、变量,函数与作用域
2.1 块作用域
- 代码块,将变量的声明与赋值(初始化)二合一,私有成员
{
// 代码块
// 将变量的声明与赋值(初始化)二合一
// 私有成员
let a = 123;
// 等价于以下二条:
// let a;
// a = 123;
// 块中变量在块中可以访问到
console.log(a);
}
// 块中成员,在块的外部不可访问/不可见
// console.log(a);
2.2 函数作用域
- 在函数中声明一个变量,私有变量
function sum(a, b) {
// 在函数中声明一个变量
// 私有变量
let res = a + b;
// 函数内部声明的成员可以内部访问
console.log(res);
}
sum(30, 50);
// 但是在函数外部访问不到
// console.log(res);
2.3 全局作用域
- 位于”代码块/函数”之外的空间, 叫”全局作用域”
// qq: 全局变量, 公共变量
let qq = "1183229555";
// ! 全局成员(变量/函数)在代码的任何地方,都是可用的
{
console.log(qq);
}
{
{
{
console.log(qq);
}
}
}
function f1() {
console.log(qq);
}
f1();
function f2() {
return function () {
return function () {
console.log(qq);
};
};
}
// 因为函数嵌套了三层,所以调用了三次
f2()()();
2.4 作用域优先级
- 作用域, 由外向内允许, 由内向外受限, 从而形成一条具有优先级的”作用域链”
let username = "Help";
{
{
{
console.log(username);
}
}
}
function f3() {
// 没有username
let username = "zhao";
console.log(username);
}
f3();
3、常量,标识符命名规范
3.1 常量
- 当一个数据,需要在多处被引用,为了防止引用时发生数据不一致,需要将它的值固定下来
- 这样的数据,应该声明为”常量”
- 所谓”常量”,就是经常被使用到的变量, 简称”常量”
- 常量的值不可变,所以必须在声明时初始化
- 禁止更新
- 变量与常量在使用时,如何选择?
- 尽可能首选”常量”, 除非这个值用到循环变量中,或者肯定会被更新,才用变量
const APP_NAME = "在线商城";
// 使用
console.log(APP_NAME);
// 常量的值不可变,所以必须在声明时初始化
// 禁止更新
// APP_NAME = "我的博客";
3.2 标识符命名规范
- 标识符: 代码中有意义的符号, 例如: 变量, 函数等
- 标识符有二类:
- 系统标识符: 关键字, 保留字, 是 JS 提供给开发者, 直接拿来用,不需要声明
- 自定义标识符: 必须 “先声明, 再使用”, 例如 email, password, get…
- 标识符可使用的字符:
- 必须是: 字母,数字,
下划线"_"
, “$”(四种),其它字符均是非法符号 - 首字母不得使用”数字”
- 标识符命名规范:
- 驼峰式: 第二个单词首字母大写, 第一个单词首字母是否大小取决于用途,例如构造函数/类的首字母要大写
- 蛇形式: 每个单词之间使用”下划线”分割
let let = 1;
// 关键字,保留字
let const function class ...
// 自定义
// 合法的
myEmail, user_name, UserController/类/构造函数
// 非法的
my#email, 123aaa, $_user@ElementInternals.com
// 驼峰式: 小驼峰,首字母小写, 大驼峰: 首字母大写
myEmail, getUserInfo, UserInfo, StuModel
// 蛇形式:
user_name, get_email, 常量 APP_NAME