uni-app uni.getStorageSync 返回数字异常

uni-app uni.getStorageSync 返回数字异常

开发环境 版本号 项目创建方式
Windows window10 HBuilderX

示例代码:

uni.setStorageSync('password',111111)
uni.getStorageSync('password')

操作步骤:

uni.setStorageSync('password',111111)
uni.getStorageSync('password')

预期结果:

uni.setStorageSync('password',111111)
uni.getStorageSync('password') // 是字符串

实际结果:

uni.setStorageSync('password',111111)
uni.getStorageSync('password') // 是数字

bug描述:

uni.getStorageSync( 返回一个数字


更多关于uni-app uni.getStorageSync 返回数字异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

uni.setStorageSync(‘password’,‘111111’) 存字符串就好了

更多关于uni-app uni.getStorageSync 返回数字异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中使用 uni.getStorageSync 获取存储的数据时,如果返回的数字出现异常,可能是由于以下原因之一:

1. 数据类型问题

uni.getStorageSync 返回的数据类型是字符串。如果你存储的是一个数字,但取出来时变成了字符串,可能会导致一些意外的行为。例如,如果你期望的是一个数字,但实际上得到的是字符串,可能会导致计算错误。

解决方法: 你可以使用 Number()parseInt() 将字符串转换为数字。

let numStr = uni.getStorageSync('myNumber');
let num = Number(numStr); // 或者 parseInt(numStr, 10)

2. 存储时数据类型不一致

如果你在存储数据时,存储的是一个字符串,但取出来时却期望它是一个数字,这也会导致问题。

解决方法: 确保在存储数据时,数据类型一致。如果存储的是数字,直接存储数字;如果存储的是字符串,取出来时再进行转换。

// 存储数字
uni.setStorageSync('myNumber', 123);

// 取出并转换为数字
let num = uni.getStorageSync('myNumber');

3. 存储的数据格式错误

如果你存储的数据格式不正确,例如存储了一个非数字的字符串,取出时尝试转换为数字可能会导致 NaN

解决方法: 确保存储的数据是有效的数字格式。如果数据来自用户输入,可以在存储前进行验证。

let userInput = '123';
if (!isNaN(userInput)) {
    uni.setStorageSync('myNumber', Number(userInput));
} else {
    console.error('Invalid number format');
}

4. 数据未存储或存储失败

如果数据未成功存储,uni.getStorageSync 返回的可能是 undefined 或空字符串,这可能会导致后续处理出错。

解决方法: 在取出数据后,先检查数据是否存在或有效。

let numStr = uni.getStorageSync('myNumber');
if (numStr) {
    let num = Number(numStr);
    console.log(num);
} else {
    console.error('Data not found or invalid');
}

5. 异步问题

虽然 uni.getStorageSync 是同步方法,但在某些情况下,如果存储操作还未完成就尝试读取数据,可能会导致数据不一致。

解决方法: 确保在存储操作完成后再进行读取操作。

uni.setStorage({
    key: 'myNumber',
    data: 123,
    success: function () {
        let num = uni.getStorageSync('myNumber');
        console.log(num);
    }
});
回到顶部