试图了解三元?:与。双杠|| ?分配第一个非空值

时间:2016-01-29 15:01:20

标签: javascript

我的目标是检查Cookie是否存在,是否确实获得了该值,并使用更新日期重新添加。如果它不存在(会话的第一次网页浏览),则生成一个随机数并将其应用于cookie。

以下是一小部分脚本。语法{{somestring}}是Google-Tag-Manager语法,它只是引用一个返回值的函数。

{{random number}} //returns a random number
{{hform_num cookie}} //returns the value of cookie hform_num

我遇到的问题是,我的cookie的值有时(约为5)并未定义。它应该始终具有数值。我尝试过使用不同的语法和代码结构。我最近了解了三元运算符,所以尝试了如下所示。我还尝试了var somevar = something || something_else来获得第一个非空值。但我仍然看到奇怪的未定义通过。

这里有一些片段:

var rn = {{random number}}; 
var hcook = {{hform_num cookie}}; // might be null
var num = hcook || rn;

document.cookie='hform_num=' + num + '; path=/; domain=.example.com; expires=' + date + ';';

这是一个类似的脚本:

var rn = {{random number}}; 
var hcook = {{hform_num cookie}}; // might be null
var num = hcook ? hcook : rn;

document.cookie='hform_num=' + num + '; path=/; domain=.example.com; expires=' + date + ';';

又来了另一个: 这是一个类似的脚本:

var num = {{hform_num cookie}} ? {{hform_num cookie}} : {{random number}};

document.cookie='hform_num=' + num + '; path=/; domain=.example.com; expires=' + date + ';';

我有什么明显的遗失吗?我的代码是"声音"?有没有传统的方法来声明两个变量,然后根据两个变量的第一个非空值为新变量赋值?

0 个答案:

没有答案