diff --git a/src/builtin/filters/html.ts b/src/builtin/filters/html.ts
index 4fb1977a2..5e32f9cac 100644
--- a/src/builtin/filters/html.ts
+++ b/src/builtin/filters/html.ts
@@ -14,7 +14,7 @@ const unescapeMap = {
}
function escape (str: string) {
- return String(str).replace(/&|<|>|"|'/g, m => escapeMap[m])
+ return !!str ? String(str).replace(/&|<|>|"|'/g, m => escapeMap[m]) : ""
}
function unescape (str: string) {
diff --git a/test/integration/builtin/filters/html.ts b/test/integration/builtin/filters/html.ts
index cd63c286a..dd5088c97 100644
--- a/test/integration/builtin/filters/html.ts
+++ b/test/integration/builtin/filters/html.ts
@@ -12,6 +12,9 @@ describe('filters/html', function () {
it('should escape function', function () {
return test('{{ func | escape }}', 'function () { }')
})
+ it('should escape undefined', function () {
+ return test('{{ nonExistent.value | escape }}', '')
+ })
})
describe('escape_once', function () {
it('should do escape', () =>