Skip to content

Commit f33b29d

Browse files
committed
Incorporate more of the error boundaries into the numeric operators (interpreted)
1 parent 5d5c38d commit f33b29d

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

defaultMethods.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,27 +66,42 @@ const defaultMethods = {
6666
},
6767
'*': (data) => {
6868
let res = 1
69-
for (let i = 0; i < data.length; i++) res *= +data[i]
69+
for (let i = 0; i < data.length; i++) {
70+
if (data[i] && typeof data[i] === 'object') return Number.NaN
71+
res *= +data[i]
72+
}
7073
return res
7174
},
7275
'/': (data) => {
76+
if (data[0] && typeof data[0] === 'object') return Number.NaN
7377
let res = +data[0]
74-
for (let i = 1; i < data.length; i++) res /= +data[i]
78+
for (let i = 1; i < data.length; i++) {
79+
if (data[i] && typeof data[i] === 'object') return Number.NaN
80+
res /= +data[i]
81+
}
7582
return res
7683
},
7784
'-': (data) => {
7885
if (!data) return 0
7986
if (typeof data === 'string') return -data
8087
if (typeof data === 'number') return -data
8188
if (typeof data === 'boolean') return -data
89+
if (typeof data === 'object' && !Array.isArray(data)) return Number.NaN
8290
if (data.length === 1) return -data[0]
8391
let res = data[0]
84-
for (let i = 1; i < data.length; i++) res -= +data[i]
92+
for (let i = 1; i < data.length; i++) {
93+
if (data[i] && typeof data[i] === 'object') return Number.NaN
94+
res -= +data[i]
95+
}
8596
return res
8697
},
8798
'%': (data) => {
99+
if (data[0] && typeof data[0] === 'object') return Number.NaN
88100
let res = +data[0]
89-
for (let i = 1; i < data.length; i++) res %= +data[i]
101+
for (let i = 1; i < data.length; i++) {
102+
if (data[i] && typeof data[i] === 'object') return Number.NaN
103+
res %= +data[i]
104+
}
90105
return res
91106
},
92107
error: (type) => {

0 commit comments

Comments
 (0)