Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is non-breaking space always treated like whitespace in Javascript source?

Tags:

javascript

While doing a code review of some Javascript files, my code review tool was showing "�" (missing character symbol) in one of the files. Upon further investigation, it turned out that the developer had used non-breaking spaces in their code. (Probably a result of copy/pasting from web.)

To my surprise, this works fine in Chrome, IE11, and Edge. But I'm concerned that it wouldn't work in all browsers. Is this a required feature of Javascript language that I can rely on? Or is this something I need to tell the developer to fix to avoid potential issues on other browsers?

Here is an example:

//NOTE: All spaces in below code are non-breaking space (0xA0), not space (0x20)
function test() {
  var mystr = 'hello';
  alert(mystr);
}

test();
like image 254
Kip Avatar asked May 31 '17 15:05

Kip


1 Answers

Yes, no-break spaces are considered whitespace according to the ECMAScript® 2015 Language Specification:

White Space Code Points:

Code Point:   Name:                                   Abbreviation:
------------------------------------------------------------------
U+0009        CHARACTER TABULATION                    <TAB>
U+000B        LINE TABULATION                         <VT>
U+000C        FORM FEED (FF)                          <FF>
U+0020        SPACE                                   <SP>
U+00A0        NO-BREAK SPACE                          <NBSP>
U+FEFF        ZERO WIDTH NO-BREAK SPACE               <ZWNBSP>
Other (Zs)    Any other unicode "Separator, space"    <USP>

Zs refers to code points listed in the "Separator, space" (Zs) category by Unicode 5.1. ECMAScript.

Example code featuring all kinds of whitespace:

// var keyword followed by different kinds of whitespace:
var	tab = "	";
varvt = "";
varff = "";
var sp = " ";
var nbsp = " ";
varzwnbsp = "";
var usp = " ";

console.log("whitespace:", tab, vt, ff, sp, nbsp, zwnbsp, usp);

... is this something I need to tell the developer to fix to avoid potential issues on other browsers?

I recommend using spaces only (some allow tabs) as it prevents all kinds of whitespace mangling by different text editors and readability issues as demonstrated by above code sample.

like image 106
le_m Avatar answered Nov 14 '22 21:11

le_m