请问老师为什么这两个一个有undefined一个每有
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首字母变大写</title>
</head>
<body>
<script>
//补充代码
function x(str){
var arrstr=str.split(" ");
var yy='';
for (var i = 0; i < arrstr.length; i++) {
var w=arrstr[i];
var yy=yy+w.charAt(0).toUpperCase()+w.substr(1)+" ";
console.log(typeof(yy))
}
return yy;
}
var yyyy=x("all time is no time when it is past");
document.write(yyyy);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首字母变大写</title>
</head>
<body>
<script>
//补充代码
var a="all time is no time when it is past";
var newstring="";
function uppercaseFirst(str){
var arr=str.split(" ");
for(var i=0,len=arr.length;i<len;i++){
var newstr=arr[i].charAt(0).toUpperCase()+arr[i].slice(1);
var newstring=newstring+newstr+" ";
}
return newstring;
}
document.write(uppercaseFirst(a));
</script>
</body>
</html>
正在回答
你好同学,第一个没有是因为yy=''把它赋值为空字符串,所以在函数里面与其他字符串进行拼接的时候正常显示。而第二个有undefined是因为函数里面在计算时,使用var又重新定义了一次,如下
这里会涉及后面的知识预解析。首先要知道,函数里面如果声明了同名的变量,那么它就不会使用外部的了。那么它使用内容的变量newstring时,newstring会提前声明,并默认赋值为undefined。
相当于如下执行:
所以把函数里面newstring前面的var去掉就行。这些同学学到后面的知识就理解了。现在先简单了解就行。
祝学习愉快 ,望采纳。
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星