toggle classname string vs array vs classList
Date tested:
9 months ago
User agent:
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Test name
Executions per second
string
246.9 Ops/sec
array
218.0 Ops/sec
classList
170.7 Ops/sec
Benchmark definition (click to collapse):
HTML Preparation code:
<div id="foo" class="some other classname"></div>
Tests:
string
var element = document.getElementById("foo"); var i = 1000; while (i--) { element.className += " bar"; element.className = element.className.slice(0, -4); }
array
var element = document.getElementById("foo"); var i = 1000; while (i--) { var items = element.className.split(' ') if (items.indexOf('bar') < 0) { items.push('bar'); element.className = items.join(' ') } items = element.className.split(' ') items.pop() element.className = items.join(' '); }
classList
var element = document.getElementById("foo"); var i = 1000; while (i--) { element.classList.add("bar"); element.classList.remove("bar"); }
Open this result on MeasureThat.net