此链接提供了以下代码段:https://www.gkogan.co/blog/save-url-parameters/
<script>
var queryForm = function(settings){
var reset = settings && settings.reset ? settings.reset : false;
var self = window.location.toString();
var querystring = self.split("?");
if (querystring.length > 1) {
var pairs = querystring[1].split("&");
for (i in pairs) {
var keyval = pairs[i].split("=");
if (reset || sessionStorage.getItem(keyval[0]) === null) {
sessionStorage.setItem(keyval[0], decodeURIComponent(keyval[1]));
}
}
}
var hiddenFields = document.querySelectorAll("input[type=hidden], input[type=text]");
for (var i=0; i<hiddenFields.length; i++) {
var param = sessionStorage.getItem(hiddenFields[i].name);
if (param) document.getElementsByName(hiddenFields[i].name)[0].value = param;
}
}
setTimeout(function(){queryForm();}, 3000);
</script>
简而言之,该代码旨在获取utm_source之类的链接参数并将其保存到sessionStorage。我不理解的是本教程未解释的以下行:
var reset = settings && settings.reset ? settings.reset : false;
此语法是什么意思?
答案 0 :(得分:0)
?:
这是javascript三元运算符。您的代码等同于下面的代码
var reset;
if (setting && settings.reset) {
reset = settings.reset;
} else {
reset = false;
}
答案 1 :(得分:0)
它正在使用三元运算符进行空运算。基本上,它会分配重置(如果存在)或布尔值false。
更多三元运算符在这里: What does the colon ":" and the question mark "?" operators do?