javascript 基础3

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"
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值