javascript基础(第一天)

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

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();

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

时间: 2024-08-02 05:55:29

javascript基础(第一天)的相关文章

使用JQuery快速高效制作网页交互特效——第一章JavaScript基础

一.什么是JavaScript 1.JavaScript概念:JavaScript面向对象事件驱动具有安全性的脚本语言,面向对象2.JavaScript特点:(1)解释性语言,边运行边解释(2)和HTML页面实现交互效果(3)语法类似于Java(4)一搬用于编写客户端脚本3.JavaScript组成:(1)ECMAScript:脚本语言规范(标准)(2)BOM Browser Object Model浏览器对象模型(3)DOM Document Object Model文档对象模型 二.Java

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

Javascript.01 -- Javascript基础

Javascript基础 1 聊聊Javascript 1.1 Javascript的历史来源 94年网景公司   研发出世界上第一款浏览器. 95年 sun公司   java语言诞生 网景公司和sun合作. Java+script   ===> javascript 1.2 W3c规范 ?结构标准        html ?表现标准   css ?行为标准      js 1.3 JavaScript和ECMAScript的关系 ECMAScript是一种由Ecma国际前身为欧洲计算机制造商协

javascript基础语法——词法结构

× 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫:而说它复杂,是因为要真正掌握它则需要数年时间.实际上,前端工程师很大程度上就是指javascript工程师.前端入门容易精通难,说的是前端,更指的是javascript.本文是javascript基础语法的第一篇——词法结构 与java关系 关于javascript有这样一个说法,java和jav

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

【JavaScript基础】------有待完善

最近开始学习JavaScript,整理了一些相关的基础知识,日后继续完善~~~ JS注释方式:// 单行注释(Ctrl+/ )/* 段落注释(Ctrl+shift+/ )*/ JavaScript基础JavaScript:基于浏览器 .基于(面向)对象.事件驱动.脚本语言JavaScript的作用:表单验证,减轻服务的压力,添加页面动画效果,动态更改页面内容,Ajax网络请求(Ajax:可以实现页面局部刷新)JavaScript组成部分:ECMAScript(5.1/6).DOM.BOMECMA

Javascript基础篇小结

Javascript基础篇小结 字数9973 阅读3975 评论7 喜欢28 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课时 入门基础 知识点: 操作系统就是个应用程序 只要是应用程序都要占用物理内存 浏览器本身也是一个应用程序 浏览器本身只懂得解析HTML 调用浏览器这个应用程序的一个功能绘制 1.javascript介绍 JavaScript操作DOM的本质是=获取+触发+改变 目的:就是用来操作内存中的DOM节点 修改D

JavaScript基础—插曲

Javascript基础 1:js中我们最好使用单引号,其实可以使用双引号的但是为了区别所以js中全部使用单引号.注释和C#的是一样的.网页里面的执行顺序是从上到下依次执行的,不管你js放到哪里,都会按照顺序进行执行的.若是js中出现了错误,只是不继续执行此js中<script></script>的代码,但是网页中其余的js代码还是会执行的. 2:书写js代码的时候我们必须为其加上分号,这样的好处有二:1,可以便于压缩:2,提高了代码的可读性,可维护性. 3:js中的数据类型. 我

JavaScript基础细讲

JavaScript基础细讲 JavaScript语言的前身叫作Livescript.自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原有的Livescript 重新进行设计,并改名为JavaScript. JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,有了JavaScript,可使网页变得生动.使用它的目的是与HTML超文本标识语言.Java 脚本语言一起实现在一个网页中链接多个对象,与网络客户交互作用,从而可