您的位置:首页 > Web前端 > JavaScript

javascript 基础3

2016-03-11 11:38 459 查看
1.javascript中的假值 undefined null 0 -0 NaN “ ”

2. null 代表空值,使用typeof运算,返回值为object。

undefined 变量没有初始化,属性或者元素不存在。函数没有返回值,则返回undefined。使用typeof 运算,则返回undefined

3. 包装对象

var s="test";//创建一个字符串
s.len=4; //创建一个临时字符串对象,并给其len属性赋值为4,随机销毁这个对象
var t=s.len;//通过原始的字符创值创建一个新的字符串对象,尝试读取其len属性,这个属性不存在,undefined


4 不可改变原始值(undefined null 布尔值 数字和字符串)和可变的对象引用(数组和函数)

//JavaScript不能改变字符串中的字符
var s="hello";
s.toUpperCase();//返回"HELLO",但并没有改变s的值
s               //"hello"  原始字符串的值并未改变


var o={x:1};//定义一个对象
o.x=2;//通过修改对象的属性值来更改对象
o.y=3;//再次更改这个对象,给它增加一个新属性

var a=[1,2,3];  //定义一个数组
a[0]=0;         //更改数组一个元素
a[3]=4;         //给数组增加一个新元素


对象的比较并非值的比较,即使对象包含同样的属性和相同的值,他们也不相等。

//对象比较并非值得比较,即使对象属性和值都相同,它们也不相等
var o={x:1},p={x:1};//具有相同属性的两个对象
o==p       //false,两个单独的对象永不相等

var a=[],b=[]; //两个单数的空数组
a==b   //false 两个单独的数组永不相等


对象一般称为引用类型。对象值是引用,对象的比较均是引用的比较。当且仅当它们引用同一个基对象时,它们才相等。

var a=[];//定义一个引用空数组的变量a
var b=a;//变量b引用同一个数组
b[0]=1;//通过变量b来修改引用数组
a[0]   //1  变量a也会修改
a==b  //true a和b引用同一个数组,因此它们相等


将对象赋值给一个变量,仅仅是赋值的引用值,对象本身并没有复制一次。如果想得到对象的副本,必须显示的复制每个值。

var a=['a','b','c'];//待复制的数组
var b=[];           //复制到的目标空数组
for(var i=0;i<a.length;i++){
b[i]=a[i];
}


5.类型转换

6.对象转换为原始值

toString() 返回一个反应这个对象的字符串。数组类toString()方法是将数组元素转化为字符串。函数类toString()方法返回这个函数实现定义的表示方式。RegExp类定义的toString()方法是将对象转换为表示正则表达式直接量的字符串。

({x:1,y:2}).toString()   //"[object  object]"
[1,2,3].toString()       //"1,2,3"
(function (x) {f(x);}).toString()//"function(x) {\n f(x); \n}"
/\d+/g.toString()       //"/\\d+/g"


valueOf() 如果存在任意原始值,它就将对象转换为它的原始值。而且大多数对象无法真正表示一个原始值,因此默认的valueOf()方法简单的返回对象本身。数组,函数和正则表达式调用valueOf()方法只是简单的返回对象本身。

对象到字符串转换:如果对象有toString()方法,则调用这个方法。如果它返回一个原始值,则将这个值转换为字符串。

如果对象没有toString()方法,或者这个方法并不返回一个原始值。那么会调用valueOf()方法,如果存在这个方法,则调用。如果返回值是一个原始值,javascript将这个值转化为字符串。

否则,抛出一个类型错误异常。

对象到数字的转换:如果对象具有valueOf()方法,则javascript将这个原始值转换为数字。

否则,如果对象具有toString()方法,后者返回一个原始值,则javascript将其转换返回

否则,javascript抛出一个类型错误异常。

7.函数作用域:函数内声明的所有变量在函数体内始终是可见的。等价于将函数体内的变量声明“提前”至函数体顶部。

var scope="global";
function f(){
console.log(scope);//输出“undefined”
var scope="local";//变量在这里赋初值,但是变量本身在函数体内任何地方均是由定义的
console.log(scope);//输出"local"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: