ThinkPHP6 限制访问频率,Redis版,支持毫秒缓存
2026/5/9 8:31:36
JS代码需写在<script>标签中,常见编写方式:
<button onclick="alert('你点击我干嘛');">点我一下</button>href中(不推荐)<a href="javascript: alert('让你点你就点');">你也点我一下</a><script>标签内(推荐)<scripttype="text/javascript">alert("我是script标签中的代码!");</script><script type="text/javascript" src="js/script.js"></script><script>标签内不能再写代码,需额外加<script>标签写内部代码。/* 注释内容 */// 注释内容alert()和Alert()是不同的。;结尾(浏览器会自动补,但建议手动加)。| 类型 | 说明 | 示例 |
|---|---|---|
| 字面量 | 不可改变的值(直接使用) | 123、"hello" |
| 变量 | 保存字面量,值可修改 | 声明:var a;;赋值:a=123;;声明+赋值:var a=123; |
命名规则:
_、$;var、if等);helloWorld)。分为基本数据类型和引用数据类型:
String(字符串)、Number(数值)、Boolean(布尔)、Null(空值)、Undefined(未定义);Object(对象)。\表示特殊字符(例:\"表示双引号)。varstr='我说:"今天天气真不错!"';// 正确str="我说:\"今天天气真不错!\"";// 转义写法Number.MAX_VALUE:JS能表示的最大数;Number.MIN_VALUE:JS能表示的最小数;Infinity:正无穷(超过最大值时出现);-Infinity:负无穷;NaN:表示“非数字”(Not A Number);true(真)、false(假),用于逻辑判断。| 类型 | 说明 | typeof检测结果 |
|---|---|---|
Null | 表示空对象,值为null | object |
Undefined | 变量声明后未赋值,值为undefined | undefined |
将其他类型转为字符串的方法:
toString()方法变量.toString();null、undefined无此方法。vara=123;varb=a.toString();// b是字符串"123"String()函数String(变量);null、undefined。| 方法 | 说明 | 示例 & 规则 |
|---|---|---|
Number()函数 | 通用类型转换 | - 字符串:纯数字→数字;含非数字→NaN;空串/全空格→0- 布尔: true→1、false→0- null→0- undefined→NaN |
parseInt() | 仅转字符串为整数(非字符串先转字符串) | - 例:parseInt("123abc")→123;parseInt("abc123")→NaN- 可指定进制: parseInt("070", 8)(按8进制解析) |
parseFloat() | 仅转字符串为浮点数(逻辑同parseInt) | - 例:parseFloat("3.14abc")→3.14 |
使用Boolean()函数,转换规则:
0、NaN→false,其余→true;false,其余→true;null、undefined→false。0x开头(例:0x10→十进制16);0开头(例:070→十进制56);parseInt("070")在不同浏览器解析不同,需指定进制(如parseInt("070", 10)按十进制解析)。| 运算符 | 说明 | 特殊规则 |
|---|---|---|
+ | 加法/字符串拼接 | - 两个字符串→拼接; - 其他值+字符串→转字符串后拼接; - 其余情况→转Number后相加 |
-/*///% | 减法/乘法/除法/取余 | 非Number值先转Number,再运算;与NaN运算→NaN |
+(正号):非Number值转Number(例:+true→1);-(负号):转Number后取反;++/自减--:a++:先返回原变量值,再自增;++a:先自增,再返回新值;a--/--a)。| 运算符 | 说明 | 规则(短路运算) |
|---|---|---|
! | 非运算(取反) | 非布尔值先转布尔,再取反(例:!0→true) |
&& | 与运算 | 第一个值为false→返回第一个值;否则返回第二个值(例:5 && 6→6;0 && 6→0) |
| ` | ` |
=(赋值);+=、-=、*=、/=、%=(例:a += 5等价于a = a + 5)。>、<、>=、<=,返回布尔值;| 运算符 | 说明 | 规则 |
|---|---|---|
== | 相等(自动类型转换) | 类型不同先转换;undefined和null相等;NaN与任何值不相等 |
!= | 不相等(自动类型转换) | 与==逻辑相反 |
=== | 全等(不类型转换) | 类型不同直接返回false;类型相同再比较值 |
!== | 不全等(不类型转换) | 与===逻辑相反 |
NaN:用isNaN()函数(例:isNaN(NaN)→true)。条件表达式 ? 语句1 : 语句2;true→执行语句1;否则执行语句2;var max = a > b ? a : b(取a、b最大值)。用{}包裹的一组语句,仅起“分组作用”,内部变量外部可见(无作用域隔离)。
if(条件表达式){语句;// 条件为true时执行}if(条件表达式){语句1;// true执行}else{语句2;// false执行}if(条件1){语句1;}elseif(条件2){语句2;}else{语句3;}{}包裹成代码块。vara=10;if(a>10){// 代码块包裹,控制多条语句alert("a比10大~~~");alert("谁也管不了我~~~");}else。switch(条件表达式){case表达式1:语句1;break;// 跳出switchcase表达式2:语句2;break;default:语句n;// 所有case不匹配时执行break;}case后的表达式做全等比较(===);case开始执行,直到遇到break;default。| 循环类型 | 语法 | 执行逻辑 | 特点 |
|---|---|---|---|
| while循环 | while(条件表达式) { 循环体 } | 先判断条件,满足则执行循环体 | 可能一次都不执行 |
| do-while循环 | do { 循环体 } while(条件表达式) | 先执行循环体,再判断条件 | 至少执行一次 |
| for循环 | for(初始化表达式; 条件表达式; 更新表达式) { 循环体 } | 1. 初始化(仅1次) 2. 判断条件 3. 执行循环体 4. 更新表达式 5. 重复2-4 | 结构更紧凑,适合已知循环次数 |
| 关键字 | 作用 |
|---|---|
| break | 跳出当前switch语句/循环语句(终止执行) |
| continue | 跳过当前轮循环的剩余代码,直接进入下一轮循环(仅对最近的循环生效) |