1. 变量的概念
变量是计算机编程中的一个基本概念,它可以存储数据并且可以被程序访问和修改。在微信小程序中,变量也是一个非常重要的概念。
在JavaScript中,变量可以用var、let和const关键字来声明。其中,var关键字是传统的变量声明方式,而let和const是在ES6中引入的新特性。
// var关键字声明变量
var a = 1;
// let关键字声明变量
let b = 'hello';
// const关键字声明常量
const c = true;
可以看到,var、let和const声明变量的方式都很类似,区别在于let和const声明的变量是块级作用域的,而var声明的变量是全局作用域的。
1.1 变量的命名规则
在微信小程序中,变量的命名规则和JavaScript中一样。
变量名必须以字母、下划线或美元符号开始
变量名可以包含字母、数字、下划线或美元符号
变量名不能使用JavaScript的关键字和保留字作为变量名
以下是一些合法的变量名:
var name;
var _age;
var $username;
var myAge2;
以下是一些非法的变量名:
var 12345;
var true;
var break;
1.2 变量的数据类型
在JavaScript中,变量的数据类型包括基本数据类型和复杂数据类型。
基本数据类型:包括数字、字符串、布尔值、null和undefined
复杂数据类型:包括对象、数组和函数
以下是一些变量的数据类型的示例:
var age = 18; // 数字
var name = 'Tom'; // 字符串
var isAdult = true; // 布尔值
var car = null; // null
var student; // undefined
var person = {name: 'Jack', age: 20}; // 对象
var fruits = ['apple', 'banana', 'orange']; // 数组
function add(a, b) { return a + b; } // 函数
2. 变量的作用域
在计算机编程中,变量的作用域描述了变量在代码中可被访问的范围。
2.1 全局作用域
在微信小程序中,全局作用域是指在程序执行的任何地方都能够访问的变量。
以下是一个全局变量的示例:
var temperature = 0.6;
function printTemperature() {
console.log('当前温度为:' + temperature);
}
printTemperature(); // 输出当前温度为:0.6
在上面的代码中,temperature是一个全局变量,可以被程序的任何部分访问。
2.2 局部作用域
在微信小程序中,局部作用域是指在函数内部声明的变量,只能在函数内部访问。
以下是一个局部变量的示例:
function printTemperature() {
var temperature = 0.6;
console.log('当前温度为:' + temperature);
}
printTemperature(); // 输出当前温度为:0.6
console.log('当前温度为:' + temperature); // 报错,temperature未定义
在上面的代码中,temperature是一个局部变量,只能在函数内部访问。
2.3 作用域链
在JavaScript中,每个函数都有一个可以访问的作用域。当程序执行到一个函数时,会创建一个新的作用域,并将其添加到作用域链中。
以下是一个作用域链的示例:
var a = 'global a';
function outer() {
var b = 'outer b';
function inner() {
var c = 'inner c';
console.log(a); // global a
console.log(b); // outer b
console.log(c); // inner c
}
inner();
}
outer();
在上面的代码中,inner函数可以访问自身作用域内的变量c、outer函数中的变量b以及全局变量a。
2.4 闭包
闭包是指一个函数内部定义的函数,该函数可以访问外部函数的变量。
以下是一个闭包的示例:
function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
console.log(add5(2)); // 7
console.log(add10(2)); // 12
在上面的代码中,makeAdder函数返回了一个函数,这个函数可以访问makeAdder函数的参数x。
3. 总结
在微信小程序中,变量和作用域是非常重要的概念,需要仔细掌握。变量可以存储数据,而作用域定义了变量的可访问范围。全局作用域是可以在程序的任何地方访问的变量,而局部作用域是只能在函数内部访问的变量。作用域链描述了函数的嵌套关系,而闭包可以访问外部函数的变量。