diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index e6492dc..6447a4e 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -86,11 +86,15 @@ _base_js_escapes = (
 _js_escapes = (_base_js_escapes +
                tuple([('%c' % z, '\\x%02X' % z) for z in range(32)]))
 
+_js_escapes_dict={}
+for k, v in _js_escapes:
+    _js_escapes_dict[k]=v
+
+_js_escapes_re = re.compile(u'[\u0000-\u001f\u2028\u2029]|\\\\|\'|"|>|<|&|=|-|;')
+
 def escapejs(value):
     """Hex encodes characters for use in JavaScript strings."""
-    for bad, good in _js_escapes:
-        value = value.replace(bad, good)
-    return value
+    return _js_escapes_re.sub(lambda m: _js_escapes_dict[m.group(0)], value)
 escapejs = stringfilter(escapejs)
 
 def fix_ampersands(value):
