码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript知识汇总------js中容易被忽略的细节(持续更新)

时间:2018-04-02 23:52:26      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:内存   nbsp   nal   let   运算   键值   one   声明   reference   

  • in运算符

    语法:boolean       “name” in Object 判断对象是否具有某一个属性
var myObject = {name:‘吴小碎‘};
console.log(‘name‘ in myObject); //true   返回值为true表示myObject中存在name属性
console.log(‘age‘ in myObject); //false   返回值为false表示myObject中不存在name属性
  • new运算符 和 直接量(字面量)

var objONE = {};   //直接量(字面量)生成对象
var objTWO = new Object();   //new运算符生成对象
  • 引用类型 和 值类型

值类型赋值不会改变原始数据
引用类型在内存中是一个,值改变会改变以前的数据
var num1 = ‘13‘;
var num2 = num1;
num2 = ‘23‘;
console.log(num1)   //13   改变值num2的值num1并未改变,证明num1与num2在空间分别占有自己的内存,是两个独立的个体
console.log(num2)   //23   
console.log(num1 == num2);   //false  这里是值引用比较,故只比较值是否相同

var obj1 = {name:‘吴小碎‘,age:18};
var obj2 = obj1;
obj2.sex = ‘男‘
console.log(obj2);   // {name: "吴小碎", age: 18, sex: "男"}
console.log(obj1);   // {name: "吴小碎", age: 18, sex: "男"}  当增加obj2属性时,obj1随之改变
console.log(obj1 == obj2);   //true   引用类型公用一个内存,相当于obj2是obj1的桌面快捷方式,obj1和obj2指向同一内存路径
  • delete

  1. 删除数组中的一个元素
  2. 对象的属性或者方法
  3. 删除一个没有用var 的变量声明
var arr1 = [1,2,3,4]
delete arr1[0]
console.log(arr1);  // [empty, 2, 3, 4] 长度不变,只是删除其中的值

var obj = {name:‘吴小碎‘,age:18};
delete obj.name
console.log(obj)   //{age: 18}   删掉键值对

var a1 = ‘test‘;
delete a1;
console.log(a1); //test  变量a1还存在,a1未被删除

a2 = ‘test‘;
delete a2;
console.log(a2)   //Uncaught ReferenceError: a2 is not defined  证明已经删除变量a2
  • 报错处理方法

  try{  可能出现错误的代码  } catch(e) {   e->接收的错误信息   }finally{   无论怎样都会最后执行   }
try {
    //可能出现错误的代码
    //1.
      obj.name;  //系统报错信息->obj is not defined
    //2.
    //throw new Error(‘我是错误信息‘);   //强行扔出报错信息  
} catch (error) {
    //如果出错执行  error->try抛出的错误信息
    console.log(error); //ReferenceError: a is not defined
} finally {
    //无论怎样都会最后执行
    console.log(‘最终执行我了吗?‘);   //最终执行我了吗?
}
  •  js执行: 预解析(函数,和var) , 一句一句执行

解析顺序:scirpt代码块  ->  解析执行环境  ->  var || function (function优先级高于var)
<script>
    console.log(msg);//与下方msg定义变量存在于两个代码块故:Uncaught ReferenceError: msg is not defined
</script>
<script>
    var msg = ‘吴小碎‘
</script>

<script>
    console.log(msg);   //msg在上一个代码快解析完成,所以打印出:吴小碎
    console.log(msg1);  //与msg1存在与同一个代码块,解析执行环境存在在一个script代码块内所以:undefined
    var msg1 = ‘吴小碎‘
</script>

 

  • 表达式

凡是将数据和运算符等联系起来有值的式子就是表达式
  • 语句

表达式+分号

Javascript知识汇总------js中容易被忽略的细节(持续更新)

标签:内存   nbsp   nal   let   运算   键值   one   声明   reference   

原文地址:https://www.cnblogs.com/iwzyuan/p/8698518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!