2492
数据类型
乐果 发表于 2016 年 09 月 06 日 标签:JavaScriptPHPpython
–
笔记于2012-12-31, 百度空间。
现因百度空间封闭,故转载过来。
–
第一次了解“数据类型”这个概念,是学习javascript的时候。
js将数据分为两大类型:“基本类型”(或称“值类型”)和“引用类型”,二者的区别可以用一个经典的例子来说明:
基本类型:
funciton addTen(num){
num+=10;
return num;
}
var count=20;
var result=addTen(count);
alert(count);//20
alert(resullt);//30
引用类型:
function setName(obj){
obj.name="LSN";
}
var person=new Object();
setName(person);
alert(person.name);//LSN
从上面的例子可以看出,“引用类型”变量obj引用了一个内存地址,而非值,所以传递给函数在内部改变时,外面的变量跟着改变了。
随着接触不同语言,发现其他语言在数据类型这个概念上,或多或少有相似也有差异。
PHP默认情况下,变量的数据类型是“基本类型”的,需要使用“引用类型”时,需要加上符号“&”。
基本类型:
function test(&$a,$b)
{
foreach ($b as $v)
{
$a[] = 'f';
}
}
$a = array('a', 'b', 'c');
$b = $a; // $b 赋予为$a的值
test($a,$b);
var_dump($b); // 此时,$b 为 array('a', 'b', 'c');
引用类型:用&
function test(&$a,$b)
{
foreach ($b as $v)
{
$a[] = 'f';
}
}
$a = array('a', 'b', 'c');
$b = &$a; // $b 赋予为$a的引用
test($a,$b);
var_dump($b); // 此时,$b 为 array('a', 'b', 'c', 'f' , 'f' , 'f' );
Python有句有名的口号“一切数据是对象,一切命名是引用。”,因为这句话,起初我认为所有数据都是“引用类型”的—它刚好和PHP相反。
但是,实际上Python还是有“基本类型”的—比如字符串类型的数据,见如下代码:
#coding=GBK
def test(a):
a = a+'f'
s = 'abc'
test(s)
print s #结果为abc
引用类型:比如“列表”、“字典”等等
#coding=GBK
def test(a):
a.append('f')
s = ['a', 'b', 'c']
test(s)
print s #结果为 ['a', 'b', 'c', 'f']
仅此,
本人上述理解不知道对否。
欢迎大家指正!
乐果 发表于 2016 年 09 月 06 日 标签:JavaScriptPHPpython