最大的区别:引用类型有单独的存储空间,只引用对方的地址;值类型直接存在变量中。
##字符编码:
1、ASCII编码:128刚好7个二进制,0-127,基本的控制字符 数字:48-57;字母:65-97
2、双字节字符
3、Unicode
4、utf-8:统一转换格式,与ASCII重合部分使用1个字节,汉字部分使用3个字节
##答疑:
1、字符所占字节
*需考虑的编码:
*ASCII编码:用于英文字母,数字,英文标点符号。英文字母都是一个字节
*双字节字符:汉字的编码规则,与ASCII重合部分为一个字符,其余都是2个字节
*Unicode编码(utf-16): 任何字符都是2个字节
*utf-8编码:与ASCII重合部分使用1个字节,汉字部分使用3个字节
2、 有什么用
*凡是定义变量就要开辟存储空间,声明不分配
* var num; //不分配内存
* var num = 123; //4个字节
* var num = [1,2,3]; //数组对象为一个引用对象,引用对象是数值,将数据存储在一个单独的空间内,该数组的地址 被变量存起来了
*var num = '123'; //4个字节(三个有效,最后一个是结束控制符)
##值类型与引用类型的存储特征
1、内存逻辑结构图(多画图来分析)
2、值类型的赋值
var num = 123; var num2 = num;
*值类型赋值的存储特点,将变量内的数据都拷贝一份存储给新的变量那么内存终将有2份数据
3、引用类型的赋值
var o ={ name : '张三' }; var obj = o;
*赋值就是将变量o中存储的数据拷贝一份,然后将该数据赋值给obj;
*内存中只存储一份
*问题:利用修改obj中的name属性值会影响o中的值