原始数据类型:
number(数值)、boolean(布尔:判断真假)、string(字符串)、undefined(声明未赋值)、null(声明赋值为空,类型无法确定,在接下来的使用中进行确定)、symbol(唯一标志符)
引用数据类型:
function(函数)、array(数组)、object(对象)
两种数据类型变量的存储方式的不同,在变量赋值发生变化时出现的不同情况
1、原始数据类型的变量值存储在栈中:
var a = 23; var i = a; a = 34; 此时,i 中的值仍为23;(a 只是将变量值赋值给了 i,之后 a 的改变与 i 无关);
2、引用数据类型的变量在栈中存储了变量值的存储地址,实际变量值则存储在堆中(假设b的变量值的存储地址为0x001)
var b = [ 23,34,45,3 ]; var j = b; b = [ 90,67,5,3 ]; 此时b 中的值为 [ 90,67,5,3 ];(b 则是将变量值的存储地址赋给了 j,此时b 和 j 的变量值存储地址同时指向地址#001);
如图所示:

js六大假值:null、undefined、false、0、NaN、空字符串'' ==> 返回均为false;
typeof判断字符串类型,但无法识别null、array、object,此三者输出类型均为object
数字, typeof( 1 ) == 'number' ;
字符串,typeof( 'jia' ) == 'string';
布尔,typeof( true ) == ‘boolean’;
null,typeof( null ) == 'object';
undefined,typeof( undefined ) == 'undefined';
symbol,typeof( Symbol() ) == ‘symbol’;
array,typeof( [] ) == ‘object’;
function,typeof( function(){} ) == 'function';
object,typeof( {} ) == ‘object’;
null 和 undefined 的比较:
null == undefined; // true
null == undefined; // false
unicode编码
数字范围:0 ~ 9
汉字范围:\ue400 ~ \u9fa5
字母范围:A ~ z (字母之间存在其他字符的unicode码)
其他字符
typeof判断类型
var n = '0' ;
var result = ( typeof n == 'number' || n != ' ') ? '数字' : ((n >= '\u4e00' && n <= '\u9fa5') ? '汉字' : ((n >= 'A' && n <= 'Z'|| n >= 'a' && n <= 'z') ? '字母' : '其他字符')) ;
console.log('result ==> ', result);

被折叠的 条评论
为什么被折叠?



