JavaScript Type: Strings
String in JavaScript are sequences of Unicode characters. 以下variable declaration在JS中是valid的:
const 你好 = 'hello';
console.log(你好); // hello
JS中没有dedicated char type, 如果需要表示char的话,一般用string来代替。String有length property:
'hello'.length; // 5
String属于Object,可以对String做类似于以下的operations:
'hello'.charAt(0); // "h"
'hello, world'.replace('world', 'mars'); // "hello, mars"
'hello'.toUpperCase(); // "HELLO"
JavaScript: Other Types
JS distinguishes between null and undefined. null specifically stands for non-value, whereas undefined stands for uninitialized value.
const a = [1, 2, 3, 4];
a[5]; // undefined
a[5] = null;
a; // [1, 2, 3, 4, undefined, null];
JS支持Boolean Type,具体如下:
-
false,0, empty string"",NaN,null以及undefined都会被视作false。 - 以上之外的value都会被视作true。
Boolean(''); // false
Boolean(234); // true
Variables
JS有三种declare variable的方式,namely var, let和const。
let会declare block-level variable。
// myLetVariable is *not* visible out here
for (let myLetVariable = 0; myLetVariable < 5; myLetVariable++) {
// myLetVariable is only visible in here
}
// myLetVariable is *not* visible out here
同样的,const也会declare block-level variable,但与let的区别在于constdeclare的variable不可以re-assign value。
const foo = 'bar';
foo = 'hello'; // will throw an error
var在ES6 standard中已经很少被使用了,因为它会automatically declares a global variable。 Traditionally, var is the only way to declare a variable in JS.
// myVarVariable *is* visible out here
for (var myVarVariable = 0; myVarVariable < 5; myVarVariable++) {
// myVarVariable is visible to the whole function
}
// myVarVariable *is* visible out here
Note:
- If you declare a variable without assigning its value, it will be
undefinedinitially. - 在ES6之前,JS是没有block-level scope的,只有function存在scope,这一点和Java等语言是有区别的。然而,ES6新增的
let和const允许declare block-scoped variables。
Operators
JS支持基本的operators,包括+, -, *, /以及%。
x += 5;
x = x + 5; // equivalent to above
x++; // ++ and -- can be used
+ operator will do string concatenation:
'hello' + ' world!'; // hello world!
If you add a string to a number, they will be converted into string first:
'3' + 4 + 5; // '345'
3 + 4 + '5'; // '75'
Comparisons in JS is a bit interesting. Double equal sign will perform type coersion if you give different types:
123 == '123'; // true
1 == true; // true
// To avoid coersion, use triple-equal sign
123 === '123'; // false
1 === true; // false
JS also supports bit-wise operations.
-
&(bitwise AND) -
|(bitwise OR) -
^(bitwise XOR) -
~(bitwise NOT) -
<<(left shift) -
>>(arithmetic right shift) -
>>>(logical right shift)
Different from C, logical right shift can be done by the>>>operator.