rhs*_*gic 2 javascript var undefined-function
我正在学习管理系统中工作并创建一些自定义组件
这是返回url但是"course_syllabus_code"在url后显示为undefined.我是Javascript的初学者,已经在谷歌上看了一些其他的答案,但仍然无法弄明白.
基本上用户将能够打开代码并在顶部输入变量(将有多个).接下来是所有魔法应该发生的地方......
输入的变量的结构不能改变,但可能没有以最佳方式执行"魔术".
<script type="text/javascript">
var course_syllabus_code = "72524";
function syllabusLink(course_syllabus_code) {
location.href = 'https://foo.com'+course_syllabus_code;
}
</script>
<ul>
<li><a href="javascript:syllabusLink()"><img src="CourseButton3.png" />Syllabus</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
您将course_syllabus_code
作为参数传递给函数,但是在没有任何参数的情况下调用函数.当您调用参数少于其定义的函数时,您未传递的函数将使用该值undefined
.由于您已经为函数参数赋予了与全局相同的名称,因此它会从函数中的代码"阴影"(隐藏,隐藏)全局,而代码将访问参数.
你有三个选择(只做其中一个,而不是全部):
只需删除声明的函数参数即可使用全局:
function syllabusLink() {
// Removed here ------^
Run Code Online (Sandbox Code Playgroud)或者,将全局传递给您调用它的函数:
<a href="javascript:syllabusLink(course_syllabus_code)"><img src="CourseButton3.png" />Syllabus</a>
Run Code Online (Sandbox Code Playgroud)
我可能也改变了参数的名称(这里我用过scode
):
function syllabusLink(scode) {
location.href = 'https://foo.com'+scode;
}
Run Code Online (Sandbox Code Playgroud)或者,不要创建course_syllabus_code
全局,并将其传递给函数:
<a href="javascript:syllabusLink('72524')"><img src="CourseButton3.png" />Syllabus</a>
Run Code Online (Sandbox Code Playgroud)我可能会去#3,除非有一个非常好的理由它必须是一个全局变量.