frida脚本之js基础语法

[复制链接]
查看370 | 回复1 | 2026-6-26 23:33:45 | 显示全部楼层 |阅读模式

立即注册,突破游客限制,与技术大牛交流切磋,畅享海量资源,让你的技术之路不再孤单!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 璇瑛 于 2026-6-26 23:46 编辑

js基础语法入门

一、变量
JavaScript 使用var关键字来声明变量
var num = 10;
语句以分号结尾,一个分号就表示一个语句结束。
其中num是标识符,
标识符就是用来识别各种值的合法名称,由字母、美元符号、下划线和字母组成,值得一提的是,中文也是合法的标识符
但一般不推荐用中文当标识符,标识符不能数字开头
关键字不能用作标识符:

abstract
arguments
boolean
break
byte
case
catch
char
class*
const
continue
debugger
default
delete
do
double
else
enum*
eval
export*
extends*
false
final
finally
float
for
function
goto
if
implements
import*
in
instanceof
int
interface
let
long
native
new
null
package
private
protected
public
return
short
static
super*
switch
synchronized
this
throw
throws
transient
true
try
typeof
var
void
volatile
while
with
yield
1.1注释与输出
注释:和C/C++相同
打印:console.(内容参数)


二、数据类型
1. 基本类型
  • Number:数字(整数、浮点数、NaN、Infinity)
  • String:字符串,单引号 / 双引号 / 反引号包裹
  • Boolean:布尔值 true / false
  • Null:空值,代表 “空对象指针”
  • Undefined:未定义,声明未赋值的变量默认值
  • Symbol:唯一且不可变的原始值,常用于对象唯一属性名
  • BigInt:超大整数,数字末尾加 n 表示

2. 引用类型(object)
包括 Object 对象、Array 数组、Function 函数、Date 日期、RegExp 正则等。
3. typeof
可以用来判断基本数据类型

三、运算符
算术运算符:+ 、- 、* 、/ 、%(取余) ++(自增)、 --(自减)
赋值运算符:= 、+=、 -=、 *=、 /=
比较运算符:
  • == / !=:宽松相等,会自动做隐式类型转换,不要求类型,值一致就会返回真
  • === / !==:严格相等,值和类型都一致才为真
  • >、<、>=、<=

逻辑运算符:&&(与) ||(或) !(非)
三元运算符:条件 ? 表达式1 : 表达式2


四、流程语句

1. 条件分支
  • if...else if...else:多条件分支判断
  • switch...case:等值匹配,有case 穿透现象

2. 循环语句
  • for 循环:指定循环次数,结构 for(初始化; 条件; 递增){}
  • while 循环:先判断条件再执行
  • do...while 循环:先执行一次再判断条件
  • for...in:遍历对象的可枚举属性(键名)
  • for...of:遍历可迭代对象的值(如数组、字符串)

3. 控制关键字
  • break:终止整个循环
  • continue:跳过当前循环,进入下一次

五、数组
用方括号表示
//允许先定义,再赋值
var arr = [];
​
arr[0] = "111";
arr[1] = "222";
任何数据类型都可以放进数组
六、函数(function)
  • 函数声明:function fn(参数) {  return 返回值 },存在函数提升,可在声明前调用。无形参留空,多个形参逗号分离.
  • 函数表达式:const fn = function() {},无函数提升,必须赋值后才能调用。

    • 箭头函数:const fn = () => {}
    • 没有自己的 this,继承外层作用域的 this
    • 没有 arguments 对象,不能作为构造函数


箭头函数(=>)
箭头函数是为了简写函数表达式:不能单独声明,必须赋值给变量 / 直接当回调。

// 单个参数默认值
const log = (text = '空内容') => console.log(text)
log() // 输出:空内容
log('hello') // 输出:hello
​
// 多参数默认值
const userInfo = (name = '匿名', age = 18) => {
   console.log(name, age)
}
userInfo('小明') // 小明

特点:
  • 没有自己的 this:this 继承定义时外层作用域的 this(定时器、回调最常用)
  • 没有 arguments 内置参数对象,要用 ...rest 替代
  • 不能当构造函数,不能搭配 new,new fn() 直接报错
  • 没有原型 prototype

回调函数
把函数当参数传给另一个函数

const arr = [10, 20, 30]
// 括号里的 function 就是回调
arr.forEach(function (item, index, originArr) {
   // item:当前遍历的值(forEach自动传给你)
   // index:当前下标
   console.log(index, item)
})

对比
  • 普通 function 函数

  • 无参数:必须写 function fn() {}
  • 1 个 / 多个参数:必须括号包裹,逗号分隔 function fn(a,b){}
  • 默认值、剩余参数正常写在括号内



  • 箭头函数

  • 无参数:() => {} 括号不能省
  • 单个参数:x => {} 可省略括号
  • ≥2 个参数:(x,y,z) => {} 括号必须写
  • 默认值、剩余参数和普通函数写法一致
  • 单行返回值:省略 {} 和 return;多行必须加 {} + return

// 需求:遍历数组,每个数字+5
const list = [1,2,3]
// 1. 普通函数回调
list.map(function(num){
   return num + 5
})
// 2. 箭头函数简写(单参数省略括号,单行省略return)
list.map(num => num + 5)
// 3. 需要下标,多参数必须加括号
list.map((num, index) => num + index)

个人理解(可能不恰当):
        箭头函数(=>)是匿名函数,常用于简化回调函数,=>左边相当于一个没有名字,只有参数的function;=>右边是函数要执行的语句,虽然是匿名函数,常用于简化回调函数,但也可以当做普通函数赋值给变量。=> 是分隔符,隔开「参数」和「函数体」
        右边不加 {} → 只能写一行表达式,自动 return 结果;右边加 {} → 里面能写多行代码(if、循环、console 等语句),想要返回值得手动写 return。
this指针永远指向当前对象

七、对象 对象(Object)
  • 字面量创建:const obj = { name: '张三', age: 20 },写出来的值本身,就是字面量。
  • 属性访问:obj.name 或 obj['name'](属性名是变量 / 特殊字符时用方括号)
  • 支持动态增删属性:obj.gender = '男' / delete obj.age

对象是一组键值对(key-value)的集合,是一种无序的复合数据类型
var user = {
     name: "xuanying",
     age: "18";
}
键名(key)又被称为“属性”,它的“键值”可以是任意数据类型
如果一个属性的值为函数,那么通常把这个属性称为方法,方法其实就是函数,是一样的,也可以向函数那样调用,都是function
var user = {
     name: "xuanying",
     age: "18",
     hobby: ["Game","Novel"]
     getName: function(name){
     return name;
     },
     user2:{
         name2:"xuanying1",
         hobby2: ["Music","Running"]
     }
};
user.getName("xuanying");
user.user2.name2;
  • 对象的读取方式:对象名.属性  --  console.log(user.name)

  • 对象中函数调用方式:对象名.函数名()

  • 如果一个属性的值还是一个对象,就形成了链式引用

常见原生对象
数学:Math
时间:Data
八、作用域与变量提升
  • 作用域分类

    • 全局作用域:整个脚本都能访问
    • 函数作用域:仅函数内部可访问
    • 块级作用域:{} 内生效,仅 let/const 支持

  • 变量提升

    • var 声明的变量会提升到当前作用域顶部,仅提升声明、不提升赋值
    • 函数声明整体提升,可在声明前调用


最近有事,断更一周。

这个人还没有签名
璇瑛 | 2026-6-26 23:44:32 | 显示全部楼层
原笔记地址放在这里,需要的小伙伴可以下载
截图202606262344176050.png 笔记地址
这个人还没有签名
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文推荐
大神求
大神求
6 天前
热门排行