全局变量未如预期那样从方法中更改

时间:2018-09-21 03:24:33

标签: javascript reactjs module global-variables

我在组件导入该模块的react程序中使用此模块。我需要将访问令牌一经接收就存储在全局变量中,但是由于某种原因,我无法弄清楚全局变量似乎并没有按照需要进行更改

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
// email項目で自分を無視するときにundefined $userの回避のため
use Illuminate\Support\Facades\Auth;

class UserProfileUpdateRequest extends FormRequest
{
/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    // email項目で自分を無視するときにundefined $userの回避のため
    $user = Auth::user();

    return [
        'name' => 'required|string|max:10|
                   regex:/^[^ -~。-゚\x00-\x1f\t]+$/u',

        'name_kana' => 'required|string|max:20|
                        regex:/^[^ -~。-゚\x00-\x1f\t]+$/u|
                        regex:/^[ァ-ヶー]+$/u',

        'email' => ['required', 'string', 'email',
                    Rule::unique("users")->ignore($user->id)],

        'email_confirmation' => 'required|email|same:email',

        'birth_day' => 'required|date',

        'address' => 'required|max:40|
                      regex:/^[^ -~。-゚\x00-\x1f\t]+$/u',

        'job_type_id' => 'required',

        'password' => 'required|min:4|max:8|
                       regex:/^[a-zA-Z0-9]+$/u',
    ];
}
}

**代码中的这一点我想知道为什么userAccessToken没有存储在模块上方的全局变量中?我知道该值存储在本地,但是我需要全局更改该值。当我console.log时,它始终是一个空字符串,并且我的布尔标志没有改变吗?

let usersAccessToken = '';
const clientId = 'ca47d370807d46718c513653fb3d2e';
const UriRedirect = 'http://localhost:3000/';
let flag = false;
console.log(flag);
console.log(usersAccessToken);



const Spotify = {



    getAccessToken: function () {
        //
        if (usersAccessToken.length>0) {
            console.log('step 1');
            flag = true;

            return usersAccessToken;


        } else if (window.location.href.match(/access_token=([^&]*)/) !== null && window.location.href.match(/expires_in=([^&]*)/) !== null) {

1 个答案:

答案 0 :(得分:0)

下面的代码工作正常,您可以看一下下面的代码,这对我来说很好。

经过测试... https://repl.it/repls/PitifulEarlyMapping

let usersAccessToken = '';
let flag = false;
console.log(flag);
console.log('token',usersAccessToken);
getAccessToken();

function getAccessToken() {
    if (usersAccessToken.length>0) {
        console.log('step 1');
        flag = true;
        return usersAccessToken;
    } else if (flag== false) {
      console.log('step 2');
        usersAccessToken = 'tokebjzgdhjasgfj';
        return usersAccessToken;
    } else {
        console.log('step 3');
        flag = true;
        return usersAccessToken;
    }
}