-
JavaScript 中的字符串,JavaScript采用UTF-16编码的Unicode字符集,JavaScript字符串是由一组无符号的16位值组成的序列。如下代码:
<span style="font-family:SimSun;font-size:18px;">var p = "π" ; //"π" 由16位内码表示0x03c0
var e = "e"; //e 由17位内码表示0x1d452
p.length //=>1 p包含一个人6位值
e.length //=>2 e通过UTF-16编码后包含两个16位值</span>
即JavaScript字符串的length表示16位编码个数。JavaScript定义的各式字符串操作方法均作用于16位值,而非字符。但是经过亲身实践后,结果不是这样,JavaScript会自动计算字符串内的字母或文字个数:<span style="font-family:SimSun;font-size:18px;">var s = "this is a test";s.length; // 14var e = "考拉宝宝";e.length; // 4</span>
实际上能计算出字母和空格个数或文字个数。
- 布尔值。当s为以下这些值时,会补转换成false: undefined、null、-0、0、NaN、“”,其他值包括对象数组都会被转换为true;这点有些像C,而不是Java。
-
包装对象
<span style="font-family:SimSun;font-size:18px;">var s = "this is a test";var S = new String(s);typeof(s); //"string" typeof(S); //"object"s==s; // trues===S; //false</span>
-
<span style="font-family:SimSun;font-size:18px;"><strong>数组</strong>,可以超出数组长度赋值:</span><pre name="code" class="javascript"><span style="font-family:SimSun;font-size:18px;">var s = [1,2,3]s[6]=9;s //[1, 2, 3, undefined, undefined, undefined, 9]</span>
-
类型转换
<span style="font-family:SimSun;font-size:18px;">'7' * '9'; //=>63
10 + ' object'; //"10 object"
var n = 1 - 'x';
n //NaN
n + ' object' //"NaN object"</span><pre name="code" class="javascript"><span style="font-family:SimSun;font-size:18px;">null==undefined //true
'0' == 0 //true 在比较之前字符串转换成数字
0 == false //比较之前布尔值转换成数字
"0" == false //在比较之前字符串与布尔值都转换成数字</span>
-
声明,JavaScript的变量在程序运行前,先被预编译,就像函数内的所有变量被提前到函数体顶部。书中说到:JavaScript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的;JavaScript没有块级作用域(即变量在声明它的代码段之外是不可见的),取而代之的是函数作用域(变量在声明它的函数体以及这个函数体嵌套的任意函数体内都是有定义的)。