前面一句话: 挖掘知识的边界,抠的越细,深度和广度才越高,才越牛.

js的性能已经达到java的五分之一

(1) == ===的区别??

null == undefined //true
      '' == false //true
      总结 ==不靠谱, 只用===

(2) 不使用continue;

效率低,出处:javascript语言精粹111页

(2) var a = {};

a.b='xx';
      a['delete'] = 'yy'; ///关键词也无所谓了

(3) delete 删属性
      全局变量和局部变量删除不掉???

var aaaa = 123;
      delete aaaa;
      console.log(aaaa); //123

window.aaaa = 123;
      delete window.aaaa;
      console.log(window.aaaa); //undefined

function a(){
            var a= 123;
            delete a;
            console.log(a); //123
      }a();

设为a=null;祈祷上天,等待垃圾回收机制回收.

注:当使用var声明一个变量时,创建的这个属性是不可配置的,也就是说无法通过delete运算符删除

var name=1    ->不可删除

sex=”girl“         ->可删除

this.age=22    ->可删除

(4) typeof instanceof

typeof 2 === 'number' //true
      typeof new Number(2) === 'number' //false
      typeof '2' === 'string' //true
      typeof new String('2') === 'string' //false
      typeof true === 'boolean' //true
      typeof new Boolean(true) === 'boolean' //false
      typeof [] === 'object' //true
      var a = function(){}; typeof a === 'function'; //true

[] instanceof Object //true
      2 instanceof Number //false
      new Number(2) instanceof Number //true

var a = function(){}
      var b = function(){};
      a.prototype = new b();
      new a() instanceof b; //true

// typeof 能判断 基本类型 和 function
      // instanceof 能判断 自定义对象

//扩展 Object.prototype.toString.call([]) === '[object Array]'; 这样是最棒的判断

(4) if语句
      if( xxxx ) ? //6种情况为false

// null undefined NaN 0 '' false

(4) for in 
      //遍历对象

//遍历松散的数组

var a = new Array(10); a[2]=10; a[5]=10; for(var i in a){ console.log(i); }

性能,确实优化了

var a = new Array(10000000);
      a[2]=10;
      a[5]=10; 
      var time1 = new Date().getTime();
      for(var i in a ){ 
            Math.random()* Math.random()* Math.random() * Math.random();
      }
      var time2 = new Date().getTime();
      for(var i=0; i<a.length; a++){ 
            Math.random()* Math.random()* Math.random() * Math.random();
      }
      var time3 = new Date().getTime();
      console.log(time2-time1); //~100ms
      console.log(time3-time2); //~200ms

(5) 函数字面量 与 函数声明

var a = 2;
      function a(){}
      console.log(typeof a); //function ? number ?

总结:
      变量的声明被提前到作用域顶部,赋值保留在原地;
      声明式函数整个“被提前”;
      函数表达式只有变量“被提前”了,函数没有“被提前”;
      函数的声明比变量的声明具有高的优先级。
      赋值会根据前后顺序进行覆盖!

var a = function(){
            console.log('aaa');
      }
      function a(){
            console.log('bbb');
      }
      //var b = function b(){} === function b(){}
      a();

(6) 函数返回值
      var a = function(b,c){
            console.log(b+','+c);
      }
      console.log( a() );

(7) this指向
      function a(){

var that = self = this;

this.v = 'aaa';
            function b(){
                  console.log(this);
                  console.log(this.v);
            }
            b();
      }
      new a();

(8) arguments
      function a(a,b,c,d){
            //var args = [].slice.call(arguments);
      }

(9) apply call
      function a(){
            console.log(this.x+this.y);
      }
      a.call({x:100,y:100});

function C(){
            this.m = function(){
                  console.log(this.x+this.y); 
            }
      }
      var c = new C();
      c.m.call({x:100,y:100});

//这个就是this的重定向,原谅我吧,没法解释的很准确和浅显易懂,只能多练习

(10) try catch throw 关键逻辑加上就好
      var a = 'aaa';
      try{
            a = xxxx(); //不存在的方法
      }catch(e){
            throw(new Error('error'));
            a = 0;
      }
      console.log("go go go"); //这里走吗???

(11) 闭包
      for(var i=0; i<2; i++){
      }
      console.log(i);

function a(){
            //只有方法体的才有作用域
      }

var a;
      function c(){
      var v = 'vvv';
      function b(){
            return {v:v};
      };
      a = b();
      }
      c();
      console.log(a.v); //方法体是作用域, 这个大家都知道了, 内部的方法体需要给个口子出来,让外面可以访问到.

(12) 回调

function a(callback){
            callback();
      }
      a(function(){
            console.log('aaa');
      });

(13) 自执行函数, 也叫自调函数

(function(a){
            console.log(a);
      })('aaa');

(14) 正则
      var regexp = / /img
            //i   大小写
            //m 换行
            //g  检索到第一个匹配不停止,检索全部

(15) prototype
      //prototype是什么?
      function a(){
            this.v='vvv';
      }
      console.log(a.prototype); //当前对象,函数也是对象,
      console.log(a.prototype.constructor); //当前方法
      console.log(a.prototype.constructor.__proto__ === a.__proto__); //true
      //prototype是函数的内置属性,__proto__是对象的内置属性,都是查找原型链的

//prototype使用场景?
      var b = {};
      //function b(){};
      //var b = function(){}
      b.prototype.bbb='bbb';
      console.log(b.bbb);
      //console.log(new b().bbb); //构造器

//prototype咋玩? (下面的都是不好的用法)
      function a(){};
      a.prototype = function(){ console.log("aaa") };
      console.log( new a.prototype() );

// function a(){}
      // function b(){}
      // a.prototype = {aaa:'aaa'};
      // b.prototype = a.prototype;
      // var aa1 = new a(),
      // aa2 = new a(),
      // bb1 = new b();
      // aa1.prototype.aaa='xxx';
      // console.log( aa2.aaa );
      // console.log( bb1.aaa );

// function a(){}
      // function b(){ this.bbb='bbb'};
      // a.prototype = new b();
      // console.log(new a().bbb );

//-----4 其实是这样的
      Object.create();

最后一句话: !!!只有最佳技术实践才能救命!!!

转载于:https://www.cnblogs.com/tm-roamer/p/4540423.html

javascript基础(第一天)相关推荐

  1. JavaScript基础(第一部分 -- 简介、注释、输入输出、变量、数据类型、运算符、流程控制)

    前言 根据视频和PPT整理 JavaScript基础语法-dom-bom-js-es6新语法-jQuery-数据可视化echarts黑马pink老师前端入门基础视频教程 视频对应资源(在视频简介里面) ...

  2. JavaScript基础第一天

    1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌 ...

  3. JavaScript基础——第一章,基础

    一,Javascript的基本结构 <script type="text/javascript"><!-JavaScript语句;-> </scrip ...

  4. javascript百炼成仙 第一章 掌握JavaScript基础1.6 叶老

    这一日,叶小凡来到青山院附近的小山上修炼,忽然,被一块石头绊了一跤.正在他自认倒霉打算爬起来的时候,在石头缝里边发现了一枚古怪的戒指.戒指通体呈现一种枯黄色,似有一些年代悠久之感. "摔了一 ...

  5. javascript百炼成仙 第一章 掌握JavaScript基础01 初入宗门

    前些天发现了一个巨牛的人工智能学习博客,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转 乐阳村,处于脚本大陆东部的边缘地带,民风淳朴,村民日出而作,日落而息.这一日清晨,所有村民来到村庄的门口,正 ...

  6. javascript百炼成仙 第一章 掌握JavaScript基础1.8 对象的取值

    "小娃娃,我现在问你,如果我事先不知道对象的某个属性叫什么,那又该怎么访问对象中对应这个属性的值呢?"叶老笑呵呵地问到. "什么什么,事先都不知道对象的属性名称,那怎么可 ...

  7. javascript百炼成仙 第一章 掌握JavaScript基础1.4数据类型

    修行还在继续,随着对要诀的深入,叶小凡明白,在编程世界,刚才的直接量都属于一种数据.和人有男女一样,数据也是有类型的. 在JavaScript中,数据可分为两类,分别为原生数据类型(primitive ...

  8. javascript百炼成仙 第一章 掌握JavaScript基础 1.12 JavaScript运算符

    题目一出,真是几家欢喜几家愁,那些复习得好的,自然可以款款而谈,可是那些本身基础就薄弱的弟子,立刻尴尬地说不出话来.甚至有的弟子已经举双手表示要放弃比赛.这些举动立刻引来了场外那些大弟子的哄笑.尤其是 ...

  9. javascript百炼成仙 第一章 掌握JavaScript基础1.7 对象数据类型

    听到这句话,叶小凡一顿,动作停止了下来. 对象数据类型,这在JavaScript基础修炼要诀中只是提了一下,但是并没有细讲,这个对象数据类型一直以来都深深地勾起了叶小凡的好奇心. "小娃娃, ...

最新文章

  1. python少儿编程 在线课程-石家庄Python人工智能编程
  2. wget的url获取方式
  3. linux命令last格式,Linux中aulast命令起什么作用呢?
  4. 计算机表演赛vr创意大赛,计算机表演赛新增VR创意大赛
  5. mongodb存入mysql_存储到Mysql、mongoDB数据库
  6. input file multiple 配合springmvc实现多文件上传
  7. PHP面试题:HTTP中POST、GET、PUT、DELETE方式的区别
  8. java文字段落排版,文字排版相关
  9. 移远M26实现短信接收
  10. 报错:Exception opening socket
  11. 【学习体会】aligned_malloc实现内存对齐
  12. 利用Python3将EXCEL中某列特殊字符之前的汉字取首字母,特殊字符之后的汉字取全拼,然后用下划线“_”相连,写入下一列...
  13. python窗口大小动态变化_如何在tkinter中动态调整窗口大小以“自动调整”其内容?...
  14. 【Codeforces Round#618 (Div. 2)】C. Anu Has a Function 题解
  15. 激活 MarkDownPad 2
  16. 【语义分割】类别不平衡损失函数合集
  17. 使用C语言完成---温度转换表
  18. 【观察】在UBBF 2021,看懂全光目标网的演进与创新
  19. CSS margin 重叠(margin collapse)
  20. 百度地图API详解之地图坐标系统

热门文章

  1. 【worker】js中的多线程
  2. ajax和jsonp没有半点关系,跨域问题
  3. bug4 导入新工程时报 Target runtime com.genuitec.runtime.generic.jee60 is not defined
  4. 【MySQL】Got fatal error 1236原因和解决方法
  5. javascript关于检测浏览器和操作系统的问题
  6. 典型的开发国内小项目没失败的经验分享
  7. ***必须要掌握的计算机知识
  8. VC Post-build使用心得
  9. 深入跨域问题(2) - 利用 CORS 解决跨域
  10. flask中jinjia2模板引擎使用详解5