JavaScript中的一些关键字
2016-05-22 18:22
381 查看
本篇博客来讨论一下JavaScript中的一些关键字,其中包括:in,delete,typeof,instanceof,debugger,with。
以上代码会输出三个true。
上面的代码会先输出一个true再输出一个false。可见,delete运算符已将该属性删除。如果调用obj.a,则会返回undefined。
上面的代码的输出是:true,true,false。
下面是任意值在typeof运算后的返回值
如果想使用moreInnerObj中的属性或方法,会比较费劲,像这样
with语句可以来解决这个问题
with语句段结束后,作用域链恢复到原始状态。
in
in是一个运算符,它希望左操作数是一个字符串,或者可以转化为字符串,右操作数是一个对象。如果右侧的对象拥有一个与左侧操作数同名的属性,方法或索引,则返回true,否则返回false。var obj = { a : 'abc', func1 : function(){ console.log('func1 exicuted...'); } } var array = [1,2,3]; console.log('a' in obj);//有名为a的属性 console.log('func1' in obj);//有名为func1的方法 console.log(0 in array);//有索引为0的元素
以上代码会输出三个true。
delete
delete是一个一元运算符,它用来删除属性或方法或数组索引元素。var obj = { a : 'abc', func1 : function(){ console.log('func1 exicuted...'); } } console.log('a' in obj); delete obj.a console.log('a='+obj.a)
上面的代码会先输出一个true再输出一个false。可见,delete运算符已将该属性删除。如果调用obj.a,则会返回undefined。
instanceof
instanceof操作符希望左操作数是一个对象,右操作数是一个标识对象的类,如果左侧的对象是右侧类的实例,或者左侧对象是右侧类的子类的实例,则返回true。var date = new Date(); console.log(date instanceof Date) console.log(date instanceof Object) console.log(date instanceof Number)
上面的代码的输出是:true,true,false。
typeof
typeof是一元运算符,放在操作数前面,然后返回该操作数的类型,以字符串表示。例如typeof 'hello' //返回"string" typeof 123 //返回"number"
下面是任意值在typeof运算后的返回值
x | :typeof x |
---|---|
undefined | “undefined” |
null | “object” |
true或false | “boolean” |
任意数字或NaN | ‘number’ |
任意字符串 | “string” |
任意函数 | “function” |
任意内置对象(非函数) | “object” |
debugger
debugger是一个语句,它通常什么都不做,仅仅是在运行时生成一个断点,调试代码时经常非常有用with
with是一个语句,比较官方的解释是:with把一个对象添加到作用域链的头部,然后执行一段代码,最后把作用域链恢复到原始状态。假设有这么一个嵌套比较深的对象var outerObject = { propertyA : 'propertyA', innerObj :{ propertyB : 'propertyB', moreInnerObj :{ m : 'm', n : 'n', func1 : function(){ } } } }
如果想使用moreInnerObj中的属性或方法,会比较费劲,像这样
outerObject.innerObj.moreInnerObj.m = 'mm'; outerObject.innerObj.moreInnerObj.n = 'nn';
with语句可以来解决这个问题
with(outerObject.innerObj.moreInnerObj){ m = 'mm'; n = 'nn' }
with语句段结束后,作用域链恢复到原始状态。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- PreparedStatement中in子句的处理
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解