B2B网络软件
标题:
安卓脚本示例POST和GET变量方法的实际应用
[打印本页]
作者:
YYPOST群发软件
时间:
3 小时前
标题:
安卓脚本示例POST和GET变量方法的实际应用
安卓脚本示例POST和GET变量方法的实际应用
2.png
(625.33 KB, 下载次数: 0)
下载附件
3 小时前
上传
3.png
(650.14 KB, 下载次数: 0)
下载附件
3 小时前
上传
/**
* 主脚本.js - 卡密管理系统完整示例
* 基于安卓POST 和 GET 方法的实际应用
* 适用本文档 ES5 系统安卓 JavaScript 引擎 Rhino
*/
// =============================================================================
// 0. 日志桥接配置(将 printl 重定向到 console.log)
// =============================================================================
// 强制将 printl 重定向到 console.log,以便 LogBridge 能捕获日志
var originalPrintl = (typeof printl !== 'undefined') ? printl : null;
printl = function(message) {
// 同时输出到 console.log(会被 LogBridge 捕获到 H5)
if (typeof console !== 'undefined' && typeof console.log === 'function') {
console.log(message);
}
// 如果原来有 printl,也调用它(保留原始功能)
if (originalPrintl) {
originalPrintl(message);
}
};
// =============================================================================
// 1. 配置常量
// =============================================================================
var API_BASE_URL = "http://api.autoapp.net.cn:1089";
var APK_ORDER_URL = "http://api.autoapp.net.cn:1088";
var ADMIN_USERNAME = "mm258"; // 测试账号
var ADMIN_PASSWORD = "fhdg148q"; // 测试密码
// =============================================================================
// 2. 获取 Token
// =============================================================================
/**
* 获取管理 token
* API: http://api.autoapp.net.cn:1089/token?username=ak123&password=123456&validateCode=1&rememberMe=false
* @returns {String|null} 返回 token 或 null
*/
function getToken() {
try {
var http = new okHttp();
// 设置请求头
http.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
http.setHeader("Content-Type", "application/x-www-form-urlencoded");
// 构建请求 URL
var url = API_BASE_URL + "/token?username=" + ADMIN_USERNAME +
"&password=" + ADMIN_PASSWORD +
"&validateCode=1&rememberMe=false";
printl("正在获取 token...");
printl("请求 URL: " + url);
var response = http.get(url);
printl("获取 token 响应:" + response);
// 解析 JSON 响应
var jsonObj = JSON.parse(response);
if (jsonObj.code === 0) {
var token = jsonObj.msg; // msg 字段就是 token
printl("✓ Token 获取成功:" + token);
return token;
} else {
printl("✗ Token 获取失败,错误码:" + jsonObj.code);
return null;
}
} catch (e) {
printl("✗ 获取 Token 时发生异常:" + e);
return null;
}
}
// =============================================================================
// 3. 换机接口
// =============================================================================
/**
* 换机激活
* API: http://api.autoapp.net.cn:1088/apkOrder/exitActivateNew?CardCode=卡密&imei=机器码
* @param {String} cardCode 卡密
* @param {String} imei 设备 IMEI(通过 device.getIMEI() 获取)
* @returns {Boolean} 是否成功
*/
function activateNewDevice(cardCode, imei) {
try {
var http = new okHttp();
// 设置请求头
http.setHeader("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)");
// 构建换机接口 URL(注意:参数名是 CardCode,大写C)
var url = APK_ORDER_URL + "/apkOrder/exitActivateNew?CardCode=" + cardCode + "&imei=" + imei;
printl("=== 换机激活 ===");
printl("卡密:" + cardCode);
printl("IMEI: " + imei);
printl("请求 URL: " + url);
var response = http.get(url);
printl("换机响应:" + response);
// 根据实际响应判断是否成功
if (response && response.indexOf("success") !== -1) {
printl("✓ 换机激活成功");
return true;
} else {
printl("✗ 换机激活失败");
return false;
}
} catch (e) {
printl("✗ 换机激活异常:" + e);
return false;
}
}
// =============================================================================
// 4. 发卡接口
// =============================================================================
/**
* 添加新卡密
* API: http://api.autoapp.net.cn:1089/system/activatecardv2/addCard?token=xxx&card=t23432&cardType=day&devices=1&remarks=
* @param {String} token 管理 token(通过 getToken() 获取)
* @param {String} card 卡密(必须大于5位,开头必须字母)
* @param {String} cardType 卡类型(day天卡/month月卡/quarter季卡/halfYear半年卡/year年卡)
* @param {Number} devices 设备数量
* @param {String} remarks 备注信息
* @returns {Boolean} 是否成功
*/
function addCard(token, card, cardType, devices, remarks) {
try {
var http = new okHttp();
// 设置请求头
http.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
http.setHeader("Content-Type", "application/json");
// 构建 URL
var url = API_BASE_URL + "/system/activatecardv2/addCard?token=" + token +
"&card=" + card +
"&cardType=" + cardType +
"&devices=" + devices +
"&remarks=" + remarks;
printl("=== 添加卡密 ===");
printl("卡密:" + card);
printl("类型:" + cardType);
printl("设备数:" + devices);
printl("备注:" + remarks);
var response = http.get(url);
printl("发卡响应:" + response);
// 尝试解析 JSON 响应
try {
var jsonObj = JSON.parse(response);
if (jsonObj.code === 0 || jsonObj.success === true) {
printl("✓ 卡密添加成功");
return true;
} else {
printl("✗ 卡密添加失败");
return false;
}
} catch (e) {
// 如果不是 JSON,检查响应文本
if (response && response.indexOf("success") !== -1) {
printl("✓ 卡密添加成功");
return true;
} else {
printl("✗ 卡密添加失败");
return false;
}
}
} catch (e) {
printl("✗ 添加卡密异常:" + e);
return false;
}
}
// =============================================================================
// 5. 续费接口
// =============================================================================
/**
* 续费卡密
* API: http://api.autoapp.net.cn:1089/system/activatecardv2/editCard?token=xxx&card=t23432&cardType=day&devices=1&remarks=
* @param {String} token 管理 token(通过 getToken() 获取)
* @param {String} card 卡密(必须大于5位,开头必须字母)
* @param {String} cardType 卡类型(day天卡/month月卡/quarter季卡/halfYear半年卡/year年卡)
* @param {Number} devices 设备数量
* @param {String} remarks 备注
* @returns {Boolean} 是否成功
*/
function renewCard(token, card, cardType, devices, remarks) {
try {
var http = new okHttp();
// 设置请求头
http.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
http.setHeader("Content-Type", "application/json");
// 构建 URL
var url = API_BASE_URL + "/system/activatecardv2/editCard?token=" + token +
"&card=" + card +
"&cardType=" + cardType +
"&devices=" + devices +
"&remarks=" + remarks;
printl("=== 续费卡密 ===");
printl("卡密:" + card);
printl("类型:" + cardType);
printl("设备数:" + devices);
var response = http.get(url);
printl("续费响应:" + response);
// 尝试解析 JSON 响应
try {
var jsonObj = JSON.parse(response);
if (jsonObj.code === 0 || jsonObj.success === true) {
printl("✓ 卡密续费成功");
return true;
} else {
printl("✗ 卡密续费失败");
return false;
}
} catch (e) {
if (response && response.indexOf("success") !== -1) {
printl("✓ 卡密续费成功");
return true;
} else {
printl("✗ 卡密续费失败");
return false;
}
}
} catch (e) {
printl("✗ 续费卡密异常:" + e);
return false;
}
}
// =============================================================================
// 6. 查询卡密信息
// =============================================================================
/**
* 查询卡密详细信息
* API: http://api.autoapp.net.cn:1089/system/activatecardv2/info?token=xxx&card=t23432
* @param {String} token 管理 token(通过 getToken() 获取)
* @param {String} card 卡密
* @returns {Object|null} 卡密信息对象或 null
*/
function getCardInfo(token, card) {
try {
var http = new okHttp();
// 设置请求头
http.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
// 构建 URL
var url = API_BASE_URL + "/system/activatecardv2/info?token=" + token + "&card=" + card;
printl("=== 查询卡密信息 ===");
printl("卡密:" + card);
var response = http.get(url);
printl("查询响应:" + response);
// 解析 JSON 响应
var jsonObj = JSON.parse(response);
if (jsonObj.code === 0) {
printl("✓ 查询成功");
printl("卡密信息:" + JSON.stringify(jsonObj.data));
return jsonObj.data;
} else {
printl("✗ 查询失败");
return null;
}
} catch (e) {
printl("✗ 查询卡密信息异常:" + e);
return null;
}
}
// =============================================================================
// 7. 查询卡密设备列表
// =============================================================================
/**
* 查询卡密绑定的设备列表
* API: http://api.autoapp.net.cn:1089/system/activatecardv2/devices?token=xxx&card=t23432
* @param {String} token 管理 token(通过 getToken() 获取)
* @param {String} card 卡密
* @returns {Array|null} 设备列表或 null
*/
function getCardDevices(token, card) {
try {
var http = new okHttp();
// 设置请求头
http.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
// 构建 URL
var url = API_BASE_URL + "/system/activatecardv2/devices?token=" + token + "&card=" + card;
printl("=== 查询设备列表 ===");
printl("卡密:" + card);
var response = http.get(url);
printl("设备列表响应:" + response);
// 解析 JSON 响应
var jsonObj = JSON.parse(response);
if (jsonObj.code === 0) {
printl("✓ 查询成功");
var devices = jsonObj.data || jsonObj.list || [];
printl("设备数量:" + devices.length);
// 遍历显示设备信息
for (var i = 0; i < devices.length; i++) {
printl("设备" + (i+1) + ": " + JSON.stringify(devices[i]));
}
return devices;
} else {
printl("✗ 查询失败");
return null;
}
} catch (e) {
printl("✗ 查询设备列表异常:" + e);
return null;
}
}
// =============================================================================
// 8. 综合示例 - 完整业务流程
// =============================================================================
/**
* 完整业务流程演示
*/
function mainWorkflow() {
printl("========================================");
printl(" 卡密管理系统 - 完整工作流程演示");
printl("========================================");
// 步骤 1: 获取 Token
var token = getToken();
if (!token) {
printl("✗ 无法获取 token,流程终止");
return;
}
// 步骤 2: 添加新卡密
var newCard = "t2026040001";
var success = addCard(token, newCard, "month", 2, "测试卡密");
if (success) {
printl("✓ 新卡密创建成功:" + newCard);
} else {
printl("✗ 新卡密创建失败");
}
// 步骤 3: 查询卡密信息
var cardInfo = getCardInfo(token, newCard);
if (cardInfo) {
printl("✓ 卡密信息查询成功");
}
// 步骤 4: 查询设备列表
var devices = getCardDevices(token, newCard);
if (devices !== null) {
printl("✓ 设备列表查询成功");
}
// 步骤 5: 续费卡密
var renewSuccess = renewCard(token, newCard, "quarter", 3, "续费为季卡");
if (renewSuccess) {
printl("✓ 卡密续费成功");
}
// 步骤 6: 换机激活示例
var currentImei = device.getIMEI();
var testCard = "t2026040002";
var activateSuccess = activateNewDevice(testCard, currentImei);
if (activateSuccess) {
printl("✓ 换机激活成功");
}
printl("========================================");
printl(" 工作流程演示完成");
printl("========================================");
}
// =============================================================================
// 9. 实用工具函数
// =============================================================================
/**
* 批量创建卡密
* @param {String} token 管理 token
* @param {String} prefix 卡密前缀
* @param {Number} count 创建数量
* @param {String} cardType 卡类型
* @param {Number} devices 设备数
*/
function batchCreateCards(token, prefix, count, cardType, devices) {
printl("=== 批量创建卡密 ===");
printl("前缀:" + prefix);
printl("数量:" + count);
printl("类型:" + cardType);
var successCount = 0;
var failCount = 0;
for (var i = 0; i < count; i++) {
// 生成卡密:前缀 + 时间戳后 6 位
var timestamp = new Date().getTime().toString().substr(-6);
var cardCode = prefix + timestamp + String(i).padStart(3, '0');
printl("正在创建第 " + (i+1) + " 个卡密:" + cardCode);
if (addCard(token, cardCode, cardType, devices, "批量创建")) {
successCount++;
} else {
failCount++;
}
// 避免请求过快,暂停 100ms
sleep(100);
}
printl("=== 批量创建结果 ===");
printl("成功:" + successCount + " 个");
printl("失败:" + failCount + " 个");
}
/**
* 检查卡密状态
* @param {String} token 管理 token
* @param {String} card 卡密
* @returns {Object} 卡密状态信息
*/
function checkCardStatus(token, card) {
var info = getCardInfo(token, card);
if (!info) {
return {
valid: false,
message: "卡密不存在或查询失败"
};
}
// 根据实际响应结构调整判断逻辑
return {
valid: true,
info: info,
message: "卡密有效"
};
}
// =============================================================================
// 10. JavaScript 变量综合示例(基于文档说明)
// =============================================================================
/**
* JavaScript 变量基础示例 - 严格按照文档说明
* 演示变量的基本概念、声明、赋值和使用
*/
function variableBasicsExample() {
printl("========================================");
printl(" JavaScript 变量基础示例");
printl("========================================");
// 1. 基本变量声明和算术运算(文档第3-11行)
var x = 5;
var y = 6;
var z = x + y;
printl("【基本变量】x=" + x + ", y=" + y + ", z=x+y=" + z);
printl("说明:变量就像代数中的字母,用于存储数据");
// 2. 变量命名规则(文档第13-19行)
var age = 25; // 描述性名称
var sum = 100; // 描述性名称
var totalVolume = 500; // 驼峰命名
var _private = "私有"; // 下划线开头(不推荐)
var $special = "特殊"; // $开头(不推荐)
printl("【变量命名】age=" + age + ", sum=" + sum + ", totalVolume=" + totalVolume);
printl("注意:变量名区分大小写,y 和 Y 是不同的变量");
// 3. 数据类型 - 数字和字符串(文档第21-30行)
var pi = 3.14; // 数值,不用引号
var person = "John Doe"; // 字符串,用双引号
var answer = 'Yes I am!'; // 字符串,用单引号
var wrongNumber = "100"; // 这是字符串,不是数字!
printl("【数据类型】");
printl("数值 pi=" + pi + " (类型: " + typeof pi + ")");
printl("字符串 person=" + person + " (类型: " + typeof person + ")");
printl("字符串形式的数字 wrongNumber=" + wrongNumber + " (类型: " + typeof wrongNumber + ")");
// 4. 常量声明(文档第27-28行)
const PI_CONSTANT = 3.141592653589793;
printl("【常量】PI_CONSTANT=" + PI_CONSTANT);
printl("说明:const 表示常量,值不能修改");
// 5. 声明变量但不赋值(文档第32-40行)
var carname; // 声明但未赋值
printl("【未初始化变量】carname=" + carname + " (值为 undefined)");
carname = "Volvo"; // 后续赋值
printl("赋值后 carname=" + carname);
// 6. 一条语句声明多个变量(文档第42-48行)
var lastname = "Doe", age2 = 30, job = "carpenter";
printl("【多变量声明】lastname=" + lastname + ", age=" + age2 + ", job=" + job);
var a, b, c = 1;
printl("部分初始化:a=" + a + " (undefined), b=" + b + " (undefined), c=" + c);
}
/**
* 变量作用域示例 - 全局变量和局部变量(文档第62-76行)
*/
function variableScopeExample() {
printl("========================================");
printl(" 变量作用域示例");
printl("========================================");
// 全局变量(文档第62-67行)
var carName = "Volvo";
printl("【全局变量】在函数外声明: carName=" + carName);
function myFunction() {
// 这里可以使用全局变量 carName
printl(" 函数内部访问全局变量: carName=" + carName);
// 局部变量(文档第70-76行)
var localCarName = "BMW";
printl(" 函数内部声明局部变量: localCarName=" + localCarName);
}
myFunction();
printl("【注意】在函数外无法访问局部变量 localCarName");
// 演示全局变量可以在任何地方使用
printl("函数执行后仍可访问全局变量: carName=" + carName);
}
/**
* 块级作用域示例 - let 和 const(文档第79-107行)
*/
function blockScopeExample() {
printl("========================================");
printl(" 块级作用域示例 (let/const)");
printl("========================================");
// 1. var 不具备块级作用域(文档第80-81行)
printl("【var 的作用域】");
{
var x = 2;
printl(" 在代码块内声明 var x=" + x);
}
printl(" 在代码块外仍可访问: x=" + x + " (var 没有块级作用域)");
// 2. let 具备块级作用域(文档第83-85行)
printl("【let 的作用域】");
{
let y = 3;
printl(" 在代码块内声明 let y=" + y);
}
printl(" 在代码块外无法访问 let y (会报错)");
// 3. 重新定义变量的对比(文档第87-99行)
printl("【重新定义变量对比】");
var a = 10;
printl(" var a=10 (外部)");
{
var a = 2; // 这会覆盖外部的 a
printl(" var a=2 (内部块)");
}
printl(" 块执行后 a=" + a + " (被内部覆盖了)");
var b = 10;
printl(" var b=10 (外部)");
{
let b = 2; // 这是新的块级变量,不影响外部
printl(" let b=2 (内部块)");
}
printl(" 块执行后 b=" + b + " (保持原值,未被影响)");
// 4. 循环中的作用域(文档第101-107行)
printl("【循环中的作用域】");
var i = 5;
for (var i = 0; i < 3; i++) {
// 循环中使用 var
}
printl(" 使用 var: 循环后 i=" + i + " (循环影响了外部变量)");
var j = 5;
for (let j = 0; j < 3; j++) {
// 循环中使用 let
}
printl(" 使用 let: 循环后 j=" + j + " (外部变量未受影响)");
}
/**
* 变量重新声明和重置示例(文档第109-147行)
*/
function variableRedeclarationExample() {
printl("========================================");
printl(" 变量重新声明和重置");
printl("========================================");
// 1. 局部变量:var 和 let 类似(文档第109-115行)
printl("【函数内的局部变量】");
function testVar() {
var carName = "Volvo";
printl(" var 声明: carName=" + carName);
}
function testLet() {
let carName = "Volvo";
printl(" let 声明: carName=" + carName);
}
testVar();
testLet();
printl(" 两者在函数内都是局部作用域");
// 2. 全局变量:var 和 let 类似(文档第117-123行)
printl("【全局变量】");
var globalX = 2;
let globalY = 2;
printl(" var globalX=" + globalX + " (全局作用域)");
printl(" let globalY=" + globalY + " (全局作用域)");
// 3. 重置变量(文档第124-147行)
printl("【变量重置规则】");
// var 可以多次声明
var m = 2;
var m = 3; // 合法
printl(" var m=2; var m=3; → m=" + m + " (合法)");
// let 不能在同一作用域重复声明
var n = 2;
// let n = 3; // 不合法!会报错
printl(" var n=2; let n=3; → 不合法(同一作用域)");
// 在不同块中可以
let p = 2;
printl(" let p=2 (外部)");
{
let p = 3; // 合法,不同块
printl(" { let p=3 } (内部块,合法)");
}
printl(" 外部 p=" + p + " (未被影响)");
// let 和 var 不能混用
let q = 2;
// var q = 3; // 不合法
printl(" let q=2; var q=3; → 不合法(同一作用域)");
}
/**
* const 关键字详解(文档第155-214行)
*/
function constKeywordExample() {
printl("========================================");
printl(" const 关键字详解");
printl("========================================");
// 1. const 必须初始化(文档第156-171行)
printl("【const 基本规则】");
const PI = 3.141592653589793;
printl(" const PI=" + PI + " (正确:声明时初始化)");
// const PI2; // 错误!const 必须初始化
// PI2 = 3.14; // 这样也不行
printl(" const PI2; → 错误(const 必须初始化)");
// 2. const 不能重新赋值(文档第156-157行)
printl("【const 不可重新赋值】");
const MAX_VALUE = 100;
printl(" const MAX_VALUE=" + MAX_VALUE);
// MAX_VALUE = 200; // 报错!
// MAX_VALUE = MAX_VALUE + 10; // 报错!
printl(" MAX_VALUE=200; → 报错(const 不能重新赋值)");
// 3. const 和 let 的区别(文档第159-164行)
printl("【const vs let】");
printl(" 相同点:都是块级作用域");
printl(" 相同点:都不能和同作用域其他变量同名");
printl(" 不同点:const 必须初始化,let 不用");
printl(" 不同点:const 不能重新赋值,let 可以");
// 4. const 并非真正的常量 - 对象和数组可变(文档第173-188行)
printl("【const 的本质:常量引用,非常量值】");
// 对象示例
const car = {type:"Fiat", model:"500", color:"white"};
printl(" const car = " + JSON.stringify(car));
car.color = "red"; // 可以修改属性
car.owner = "Johnson"; // 可以添加属性
printl(" 修改后: " + JSON.stringify(car));
printl(" 说明:可以修改对象的属性和添加新属性");
// const car2 = {type:"Volvo"}; // 错误!不能重新赋值整个对象
printl(" car={type:'Volvo'}; → 报错(不能重新赋值)");
// 数组示例
const cars = ["Saab", "Volvo", "BMW"];
printl(" const cars = " + JSON.stringify(cars));
cars[0] = "Toyota"; // 可以修改元素
cars.push("Audi"); // 可以添加元素
printl(" 修改后: " + JSON.stringify(cars));
printl(" 说明:可以修改数组元素和添加新元素");
// const cars2 = ["Toyota", "Volvo"]; // 错误!不能重新赋值整个数组
printl(" cars=['Toyota','Volvo']; → 报错(不能重新赋值)");
// 5. const 的重置规则(文档第189-214行)
printl("【const 重置规则总结】");
const r = 2;
printl(" const r=2; (合法)");
// const r = 3; // 不合法
// r = 3; // 不合法
// var r = 3; // 不合法
// let r = 3; // 不合法
printl(" 之后不能再声明或赋值 r (所有方式都不合法)");
printl(" Rhino引擎说明:");
printl(" 在AIWROK的Rhino引擎中,const在函数作用域内不能重复声明");
printl(" 即使在不同块中也会报错,这与标准ES6行为不同");
printl(" 建议:在Rhino中避免在同一函数内多次使用同名const");
}
/**
* 变量提升示例(Hoisting)(文档第149-153行)
*/
function hoistingExample() {
printl("========================================");
printl(" 变量提升示例 (Hoisting)");
printl("========================================");
// 1. var 变量提升(文档第150-151行)
printl("【var 变量提升】");
printl(" 在声明前使用 carName: " + carName);
var carName; // 变量会被提升到作用域顶部
carName = "Volvo";
printl(" 声明并赋值后: " + carName);
printl(" 说明:var 声明的变量会被提升,但赋值为 undefined");
// 2. let 变量不提升(文档第152-153行)
printl("【let 变量不提升】");
// printl(" 在声明前使用 letCar: " + letCar); // 报错!
let letCar = "BMW";
printl(" 声明后使用 letCar: " + letCar);
printl(" 说明:let 不会被提升,声明前使用会报错(暂时性死区)");
// 3. 实际演示
printl("【实际对比】");
function testHoisting() {
printl(" var 测试:");
printl(" 声明前: x=" + x); // undefined
var x = 5;
printl(" 声明后: x=" + x); // 5
printl(" let 测试:");
// printl(" 声明前: y=" + y); // 报错!
let y = 10;
printl(" 声明后: y=" + y); // 10
}
testHoisting();
}
/**
* 实际应用示例 - 综合使用各种变量类型
*/
function practicalVariableUsage() {
printl("========================================");
printl(" 实际应用 - 综合示例");
printl("========================================");
// 使用 const 定义配置常量
const CONFIG = {
appName: "AIWROK",
version: "1.0.0",
maxRetries: 3
};
printl("【应用配置】");
printl(" 应用名: " + CONFIG.appName);
printl(" 版本: " + CONFIG.version);
printl(" 最大重试: " + CONFIG.maxRetries);
// 使用 let 定义可变状态
let retryCount = 0;
let isConnected = false;
printl("【运行时状态】");
printl(" 重试次数: " + retryCount);
printl(" 连接状态: " + isConnected);
// 模拟状态变化
isConnected = true;
retryCount = 1;
printl(" 状态更新后:");
printl(" 重试次数: " + retryCount);
printl(" 连接状态: " + isConnected);
// 使用 var 定义临时变量
var tempResult = 10 + 20;
printl("【临时计算】");
printl(" 10 + 20 = " + tempResult);
// 实际应用场景:卡密管理系统中的变量使用
printl("【卡密系统示例】");
const CARD_RULES = {
minLength: 5,
mustStartWithLetter: true,
validTypes: ["day", "month", "quarter", "halfYear", "year"]
};
var cardCode = "t2026040001";
var cardType = "month";
var devices = 2;
printl(" 卡密: " + cardCode);
printl(" 类型: " + cardType);
printl(" 设备数: " + devices);
printl(" 规则: 最小长度" + CARD_RULES.minLength + "位,必须字母开头");
}
/**
* 高级变量模式 - 闭包和数据封装
*/
function advancedVariablePatterns() {
printl("========================================");
printl(" 高级变量模式 - 闭包");
printl("========================================");
// 使用闭包创建私有变量
printl("【计数器模块 - 使用闭包】");
var counter = (function() {
var privateCount = 0; // 私有变量,外部无法直接访问
return {
increment: function() {
privateCount++;
return privateCount;
},
decrement: function() {
privateCount--;
return privateCount;
},
getCount: function() {
return privateCount;
}
};
})();
printl(" 初始值: " + counter.getCount());
printl(" 递增后: " + counter.increment());
printl(" 再递增: " + counter.increment());
printl(" 递减后: " + counter.decrement());
printl(" 说明:privateCount 是私有变量,只能通过方法访问");
// 工厂函数模式
printl("【工厂函数 - 创建用户对象】");
function createUser(name, age) {
var privateAge = age; // 私有变量
return {
getName: function() {
return name;
},
getAge: function() {
return privateAge;
},
celebrateBirthday: function() {
privateAge++;
printl(" " + name + " 过生日了!现在 " + privateAge + " 岁");
}
};
}
var user1 = createUser("Alice", 25);
var user2 = createUser("Bob", 30);
printl(" " + user1.getName() + " 的年龄: " + user1.getAge());
printl(" " + user2.getName() + " 的年龄: " + user2.getAge());
user1.celebrateBirthday();
printl(" " + user1.getName() + " 的新年龄: " + user1.getAge());
printl(" 说明:每个用户实例都有独立的私有变量");
// 模块模式
printl("【模块模式 - 组织代码】");
var MathHelper = (function() {
const PI = 3.141592653589793; // 常量
return {
add: function(a, b) {
return a + b;
},
multiply: function(a, b) {
return a * b;
},
circleArea: function(radius) {
return PI * radius * radius;
}
};
})();
printl(" 加法: 5 + 3 = " + MathHelper.add(5, 3));
printl(" 乘法: 4 × 6 = " + MathHelper.multiply(4, 6));
printl(" 圆面积(r=5): " + MathHelper.circleArea(5).toFixed(2));
printl(" 说明:PI 是模块内部的常量,外部无法修改");
}
/**
* 运行所有变量示例
*/
function runAllVariableExamples() {
printl("########################################");
printl("# JavaScript 变量综合示例大全 #");
printl("########################################");
// 依次运行各个示例函数,每个示例之间间隔2秒
variableBasicsExample();
sleep.second(2); // 暂停2秒
variableScopeExample();
sleep.second(2); // 暂停2秒
blockScopeExample();
sleep.second(2); // 暂停2秒
variableRedeclarationExample();
sleep.second(2); // 暂停2秒
constKeywordExample();
sleep.second(2); // 暂停2秒
hoistingExample();
sleep.second(2); // 暂停2秒
practicalVariableUsage();
sleep.second(2); // 暂停2秒
advancedVariablePatterns();
printl("########################################");
printl("# 所有变量示例运行完成 #");
printl("########################################");
}
// =============================================================================
// 11. 主程序入口(包含变量示例)
// =============================================================================
// 运行完整工作流程演示
mainWorkflow();
// 运行 JavaScript 变量综合示例
runAllVariableExamples();
// 示例:批量创建卡密(取消注释以使用)
/*
var token = getToken();
if (token) {
batchCreateCards(token, "t2026", 5, "day", 1);
}
*/
// 示例:单独调用某个功能
/*
// 获取当前设备 IMEI
var imei = device.getIMEI();
printl("当前设备 IMEI: " + imei);
// 换机激活
activateNewDevice("t2026040001", imei);
*/
printl("程序执行完毕!");
复制代码
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2