Javascript 为什么变量在+;=带有串联的操作根据其';什么是定义?
当我声明变量并在下一个语句中通过加号等于(+=)操作符通过连接其他变量和文本来赋值时,我接收存储在对象中的所有数据。但是,它前面有“undefined”。为了消除变量的初始未定义状态,我在连接之前定义了它,但是,这会打断我的加号等于运算符,截断结果Javascript 为什么变量在+;=带有串联的操作根据其';什么是定义?,javascript,google-apps-script,operators,string-concatenation,Javascript,Google Apps Script,Operators,String Concatenation,当我声明变量并在下一个语句中通过加号等于(+=)操作符通过连接其他变量和文本来赋值时,我接收存储在对象中的所有数据。但是,它前面有“undefined”。为了消除变量的初始未定义状态,我在连接之前定义了它,但是,这会打断我的加号等于运算符,截断结果 for (var j = 0; j < itemResponses.length; j++) { var itemResponse = itemResponses[j]; var responseTi
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
var responseTitle = itemResponse.getItem().getTitle();
var responseAnswer = itemResponse.getResponse();
var responseComplete; // Inserts undefined at start of log
// var responseComplete = ""; // Breaks += operation
// var responseComplete = new String(); // Breaks += operation
responseComplete += (responseTitle + ": " + responseAnswer + "; ");
}
Logger.log(stringData);
for(var j=0;j
var响应日志完成
未定义名称:名称<会员编号:0000<日期:2016-09-09:00<持续时间:00:00:09//****在日志头插入“未定义” var responseComplete的日志=新字符串() [16-09-15 15:39:02:610 PDT]持续时间:00:00:09
//****中断+=运算符 var响应完成日志=” [16-09-15 15:39:42:010 PDT]持续时间:00:00:09
//****中断+=运算符 非常感谢您能洞察我对这门语言的误解
(这个项目是在Google Apps脚本编辑器中编写和执行的)最后两个场景很容易解释:您在每个循环中将responseComplete重置为空字符串,因此+=没有太大意义,因为您总是连接到空字符串 响应完成+=abc 就是说 responseComplete=responseComplete+abc 既然每个循环中都有responseComplete=“”,那么 responseComplete=“”+abc=abc 第一种情况稍微复杂一些。由于var是在解析时而不是运行时求值的,这与在for循环外部声明变量是一样的,而且由于它已声明但未分配给任何值,所以第一次它等于未定义 responseComplete=responseComplete+ABC responseComplete=unfinedabc 如果保留responseComplete,则返回第二个循环并向前返回值 responseComplete=responseComplete+\u下一个值 responseComplete=undefinedABC+\u nextValue=undefinedABC\u nextValue
最后两种情况很容易解释:在每个循环中将responseComplete重置为空字符串,因此+=没有多大意义,因为您总是连接到空字符串 响应完成+=abc 就是说 responseComplete=responseComplete+abc 既然每个循环中都有responseComplete=“”,那么 responseComplete=“”+abc=abc 第一种情况稍微复杂一些。由于var是在解析时而不是运行时求值的,这与在for循环外部声明变量是一样的,而且由于它已声明但未分配给任何值,所以第一次它等于未定义 responseComplete=responseComplete+ABC responseComplete=unfinedabc 如果保留responseComplete,则返回第二个循环并向前返回值 responseComplete=responseComplete+\u下一个值 responseComplete=undefinedABC+\u nextValue=undefinedABC\u nextValue 当然有时(常常)逻辑使我难以理解。谢谢当然有时(常常)逻辑使我难以理解。谢谢