首页 > 解决方案 > 无法理解这个 Javascript 语法

问题描述

我从这个链接得到以下片段: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;

这个语法是什么意思?

标签: javascript

解决方案


它使用三元运算符进行空合并。基本上,它分配任何重置(如果存在)或布尔值 false。

这里有更多三元运算符: 冒号“:”和问号“?”是什么意思?运营商呢?


推荐阅读