为什么分配变量类型是数字?

时间:2016-12-14 11:51:36

标签: javascript

我的功能看起来像这样。

var myfuncsettings;
var myfunc = function(settings) {
    myfuncsettings = settings | {};
    myfuncsettings['prop'] = 'test';
};

我收到了错误。

Uncaught TypeError: Cannot create property 'message' on number '0'(…)

我安慰。

var myfuncsettings;
var myfunc = function(settings) {
    console.log('typeof settings: ' + (typeof settings));
    myfuncsettings = settings | {};
    console.log('typeof myfuncsettings: ' + (typeof myfuncsettings));
    myfuncsettings['message'] = 'test';
};

我得到了。

typeof settings: object
typeof myfuncsettings: number

任何人都可以告诉我,我做错了什么?

2 个答案:

答案 0 :(得分:3)

发现管道运营商的错误用法。您必须按照以下要求使用它。

myfuncsettings = settings || {};

如果使用|,它将在操作数之间执行按位OR运算。

答案 1 :(得分:2)

|bitwise operator

  

按位运算符对这种二进制文件执行操作   表示,但它们返回标准JavaScript数值

您正在寻找logical operator ||

myfuncsettings = settings || {};

参见短路评估部分 https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Short-circuit_evaluation