一.JavaScript不可变原始值 JavaScript中的原始值(undefined,null,布尔值,数字和字符串)与对象(包括了数组和函数)有着根本的区别.原始值是不可变的(undefined,null,布尔值,数字和字符串)任何方法都不法更改(或“突变”)一个原始值. var s= "Hello world!"; console.log(s.toUpperCase()); //=>HELLO WORLD! //可以看到返回的值是.... console.log(s);…
javascript中的原始值(undefined.null.布尔值.数字和字符串)与对象(包括数组和函数)有着根本区别.原始值是不可更改的:任何方法都无法更改(或“突变”)一个原始值.对数字和布尔值来说显然如此----改变数字的值本身就说不通,而对字符串来说就不那么明显了,因为字符串看起来像由字符组成的数组,我们期望可以通过指定索引来假改字符串中的字符.实际上,javascript是禁止这样做的.字符串中所有的方法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串值. 代码如下: <…
× 目录 [1]特性 [2]存储方式 [3]访问方式 [4]比较方式 [5]动态属性 前面的话 javascript的数据类型可以分为两种:原始类型和引用类型.原始类型也称为基本类型或简单类型,javascript基本数据类型包括Undefined.Null.Boolean.Number和String五种,而引用类型也称为复杂类型,在Javascript中是Object.与此相对应,它们的值也分别被称为原始值和复杂值.本文将介绍javascript中的原始值和复杂值 特性 原始值 原始值是表示J…
JavaScript 中的原始值(undefined.null . 布尔值.数值和字符串)于对象(包括数组和函数)有着根本区别. 原始值是不可更改的:任何方法都无法改变(或“突变”)一个原始值. 对于数字和布尔值来说显然如此-----改变数字的值本身就说不通,而对字符串来说就不那么明显了, 因为字符串看起来是有字符组成的数组,我们期望可以通过指定索引来修改字符串中的字符. 实际上,JavaScript是禁止这样做的. 字符串中所有的方法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串…
javascript将数据类型分为两类:原始值(undefined.null.布尔值.数字和字符串),对象(对象.函数和数组) 论点:原始值不可以改变,对象可以改变:对象为引用类型: '原始值不可以改变'不可以改变,如果动脑筋的同学肯定会怀疑了,你们字符串可以改变啊,不信你瞅下面的 var a = 'aa'; alert(a.toUpperCase());//弹出 AA 其实,这些只是表面现象,原始值字符串'a'其实并未发生改变,只是拷贝了一份然后对新的拷贝使用'toUpperCase'函数而已…
我的一句话总结:原始值不管是变量赋值还是函数传递都不会改变原值,引用值不管是变量赋值还是函数传递,如果新变量重新赋值,则不会影响原引用值,如新变量是直接操作,就会影响原引用值. 首先明确,值和类型是两个不同的概念.例如,null是null类型的唯一值.undefined是undefined类型的唯一值.而true和false是boolean类型仅有的两个值等.在任何语言中,值的操作都可以归纳为以下3个方面. 复制值:即把值赋值给新变量,或者通过变量把值赋值给另一个变量.属性或数组元素. 传递值:…
上周写过一篇读书笔记<编写可维护的JavaScript>之编程实践,其中 第8章 避免『空比较』是博主在工作中遇坑较多的雷区,所以特此把该章节重新整理分享,希望大家不再坑队友(>﹏<). 在 JavaScript 中,我们常常会看到这样的代码:变量与null的比较(这种用法很有问题),用来判断变量是否被赋予了一个合理的值.比如: var Controller = { process: function(items) { if (items !== null) { // 不好的写法…
JavaScript中对象转换为原始值遵循哪些原则? P52 对象到布尔值对象到布尔值的转换非常简单:所有的对象(包括数字和函数)都转换为true.对于包装对象亦是如此:new Boolean(false)是一个对象而不是原始值,它将转换为true. 对象到字符串对象到字符串(object-to-string)和对象到数字(object-to-number)的转换都是通过调用待转换对象的一个方法来完成的.一个麻烦的事实是,JavaScript对象有两个不同的方法来执行转换,并且借来带要讨论的一些…
字符串原始值修改不了1 var str = "abc"; 2 str[0] = "d"; 3 console.log(str[1]="f"); >>f 4 console.log(str[0]); >>a 5 console.log(str); >>abc提试:字符串是可以通过[]的形式访问的. // 在javascript中数组和对象的值是可变的,也就是说我们动态修改里面值,原始的值也会发生相应的改变,而数字…
写在前面 最近在读<JavaScript启示录>,这本书不是JavaScript的详尽的参考指南,但是把对象作为了解JavaScript的透镜,受益匪浅. 那么我们先来聊一下JavaScript的原始值(值类型)以及复杂值(引用类型),以及他们在内存空间中的存储,关于他们你可能不清楚的一些事: 我们先通过一个经典的面试题类型(并不是原题,我即兴发挥)引出我们今天的主题: 我们已经看出他们的差别,在图一:我们让b = a,改变b的值,发现a并没有改变.在图二:我们让d = c,通过d.name改…