Как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
При Javascript, когда используется null
из bind(null, str)
, используется this
. В Google Apps Script, когда null
используется для bind(null, str)
, возникает ошибка типа «Невозможно преобразовать ноль в объект». Я думаю, что это может быть спецификацией Google. Я не уверен, будет ли это изменено в будущем обновлении. В качестве текущего обходного пути, как насчет использования this
вместо null
? Или, если вы хотите использовать bind(null, str)
как null
в строгом режиме, как насчет использования {}
вместо null
как bind({}, str)
?
Кстати, я думаю, что test();
на последней строчке ваш скрипт можно удалить. Потому что в вашем случае, когда test()
запускается в редакторе скриптов, test()
запускается 2 раза test();
в последней строке. test();
в последней строке запускается как глобальный.
В приведенной выше ситуации, когда ваш скрипт изменяется, как насчет следующей модификации?
Измененный скрипт:
function print(str, num) {
Logger.log(str + ": " + num);
}
function test() {
var array = [1,2,3];
var str = "Stam";
array.forEach(print.bind(this, str));
}
или вы также можете изменить test()
вашего скрипта следующим образом. Следующий test()
возвращает тот же результат, что и выше 1.
function test() {
var array = [1,2,3];
var str = "Stam";
array.forEach(function(e) {print(str, e)});
}
Результат:
Когда вы запускаете test()
в редакторе сценариев, вы можете увидеть следующий результат в журнале .
Stam: 1
Stam: 2
Stam: 3
Ссылка:
Если я неправильно понял ваш вопрос и это Я не извиняюсь.