gpt4 book ai didi

javascript - 无法访问另一个文件中的全局变量

转载 作者:行者123 更新时间:2023-11-28 13:19:33 25 4
gpt4 key购买 nike

我知道这个问题已经被问过很多次了,但我检查了其他几个问题和答案,但仍然没有更接近解决我的问题。

index.html:

<!doctype html>
<html lang="en" ng-app="GitUserSearch">
<head>
<meta charset="utf-8">
<title>Github user search</title>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
<link rel="stylesheet" href="bootstrap_css_overrides/bootstrap_overrides.css">
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-resource/angular-resource.js"></script>
<script src="js/secrets.js"></script>
<script src="js/app.js"></script>
<script src="js/gitUserSearchController.js"></script>
</head>

<body ng-controller="GitUserSearchController as searchCtrl">
<div class="container">
<br>
<form class="form-horizontal">
<input type="text" ng-model="searchCtrl.searchTerm" ng-change="searchCtrl.doSearch()" ng-model-options="{ updateOn: 'default blur', debounce: {'default': 500, 'blur': 0} }">
<button class="btn btn-primary" ng-click="searchCtrl.doSearch()">Search</button>
</form>
<br>
<ul class="list-group">
<li ng-repeat="user in searchCtrl.searchResult.items">
<img ng-src="{{user.avatar_url}}&s=50">
<a ng-href="{{user.html_url}}">{{user.login}}</a>
</li>
</ul>
</div>
</body>
</html>

js/secrets.js:

githubToken = "longGithubTokenThatICannotShareHerePublicly";

secrets.js 位于 .gitignore 中。

js/gitUserSearchController.js:

githubUserSearch.controller('GitUserSearchController', ['$resource', function($resource) {
var self = this;

var searchResource = $resource('https://api.github.com/search/users/');
var githubToken = githubToken;

self.doSearch = function() {
self.searchResult = searchResource.get(
{ q: self.searchTerm, access_token: githubToken }
);
};
}]);

当我运行应用程序时,我可以使用浏览器的检查工具看到,发出的 http 请求没有 githubToken 字符串。

当我将 githubToken 字符串硬编码到 gitUserSearchController 中时,而不是尝试使其使用假定的 githubToken 全局变量,http 请求是在存在 GitHub token 的情况下完美发出的,因为它应该是。

所以这似乎是我如何设置文件以及如何声明和访问变量的问题。

repo here .

最佳答案

当你这样做时:

var githubToken = githubToken;

您正在定义一个新的局部变量,它“隐藏”同名的全局变量。对于任何给定的符号名称,都会在搜索全局范围之前搜索局部范围,因此与全局同名的局部变量本质上“隐藏”了全局。

另外,由于 Javascript 中的所有 var 定义都被“提升”到声明它们的函数作用域的顶部,因此上面的代码行实际上是这样处理的:

var githubToken;
githubToken = githubToken;

因此,您可以进一步了解为什么它没有执行您希望它执行的操作。

将局部变量的名称更改为不同的名称,或者甚至不定义新变量,直接使用全局变量,因为似乎没有理由分配给局部变量。

关于javascript - 无法访问另一个文件中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com