• JavaScript的基础入门


    1、JS是一门什么语言?

    •      是一门解释性的语言
    •      是一门脚本语言
    •      是一门弱类型语言,声明变量都用var
    •      是一门基于对象的语言
    •      是一门动态类型的语言:
    1.      1. 代码(变量)只有执行到这个位置的时候,才知道这个变量中到底存储的是什么,如果是对象,就有对象的属性和方法,如果是变量就是变量的作用
    2.      2. 对象没有什么,只要点了,通过点语法,那么就可以为对象添加属性或者方法

    2、函数(方法):

      函数定义:function  函数名(){

          代码

        }

      函数调用:函数名();

      注意:JS的函数没有Java的重载,一旦函数名重复,后面的会覆盖前面

      函数参数:与Java不同的是JS的参数无需定义参数类型,只需要形参名

      函数的返回值:

    1. 函数有没有返回值取决于函数体内有没有return;
    2. 如果函数有return,但是return后面没有任何内容,结果就是undefined

    3、变量

      如何获取某个变量的类型?   typeof 变量

      函数是有数据类型,数据类型:是function 类型的

    4、作用域

      全局变量:

    • 声明的变量是使用var声明的,那么这个变量就是全局变量,全局变量可以在页面的任何位置使用
    • 除了函数以外,其他的任何位置定义的变量都是全局变量
    • 全局变量,如果页面不关闭,那么就不会释放,就会占空间,消耗内存

      局部变量:

    • 在函数内部定义的变量,是局部变量,外面不能使用

        * 全局作用域:全局变量的使用范围
        * 局部作用域:局部变量的使用范围

        * 块级作用域:一对大括号就可以看成是一块,在这块区域中定义的变量,只能在这个区域中使用,但是在js中在这个块级作用域中定义的变量,外面也能使用;
        * 说明:js没有块级作用域,只有函数除外

         隐式全局变量:

      声明的变量没有var,就叫隐式全局变量

    • 全局变量是不能被删除的,隐式全局变量是可以被删除的
    • 定义变量使用var是不会被删除的,没有var是可以删除的

    5、预解析:提前解析代码

        * 预解析做什么事?

    1. 把变量的声明提前了(注意是声明,还没有赋值)----提前到当前所在的作用域的最上面
    2. 函数的声明也会被提前---提前到当前所在的作用域的最上面
     1 // 函数调用的时候,把会函数的声明提升到作用域的上面
     2    f1();//调用
     3    var num=20;//这个变量的声明会提升到变量使用之前
     4    function f1() {
     5      console.log(num);//undefined
     6      //var num=10;
     7    }
     8    
     9 // 上面这段代码其实就是这样:
    10    var num;
    11    function f1() {
    12      console.log(num);//undefined
    13      //var num=10;
    14    }
    15    num = 20;
    16 // 所以是undefined
    • 预解析中,变量的提升,只会在当前的作用域中提升,提前到当前的作用域的最上面
    • 函数中的变量只会提前到函数的作用域中的最前面,不会出去
    • 预解析会分段(多对的script标签中函数重名,预解析的时候不会冲突)

    6、JS—基于对象的语言

      js不是面向对象的语言,但是可以模拟面向对象的思想。js是一门基于对象的语言。这里的对象也可以理解为Java的对象。

      js创建对象的方式1:

     1     //实例化对象
     2     var obj = new Object();
     3     //对象有特征---属性和行为---方法
     4     //添加属性-----如何添加属性?  对象.名字=值;
     5     obj.name = "小苏";
     6     obj.age = 38;
     7     obj.sex = "女";
     8     //添加方法----如何添加方法? 对象.名字=函数;
     9     obj.eat = function () {
    10       console.log("我喜欢吃油炸榴莲凉拌臭豆腐和大蒜");
    11     };
    12     obj.play = function () {
    13       console.log("我喜欢玩飞机模型");
    14     };
    15     obj.cook = function () {
    16       console.log("切菜");
    17     };
    18     console.log(obj.name);//获取--输出
    19     obj.eat();//方法的

      js创建对象的方式2(工厂模式):

     1     //工厂模式创建对象
     2     function createObject(name,age) {
     3       var obj = new Object();//创建对象
     4       //添加属性
     5       obj.name = name;
     6       obj.age = age;
     7       //添加方法
     8       obj.sayHi = function () {
     9         console.log("阿涅哈斯诶呦,我叫:" + this.name + "我今年:" + this.age);
    10       };
    11       return obj;
    12     }
    13     //创建人的对象
    14     var per1 = createObject("小芳",20);
    15     per1.sayHi();
    16     //创建一个人的对象
    17     var per2 = createObject("小红",30);
    18     per2.sayHi();

      js创建对象的方式3(自定义构造函数):

     1     //自定义构造函数创建对象,我要自己定义一个构造函数,自定义构造函数,创建对象
     2     //函数和构造函数的区别;名字是不是大写(首字母是大写)
     3     function Person(name,age) {
     4       this.name=name;
     5       this.age=age;
     6       this.sayHi=function () {
     7         console.log("我叫:"+this.name+",年龄是:"+this.age);
     8       };
     9     }
    10 
    11     //自定义构造函数创建对象:先自定义一个构造函数,创建对象
    12     var obj=new Person("小明",10);
    13     console.log(obj.name);
    14     console.log(obj.age);
    15     obj.sayHi();
    16 
    17     var obj2=new Person("小红",20);
    18     console.log(obj2.name);
    19     console.log(obj2.age);
    20     obj2.sayHi();

      js创建对象的方式4(字面量方式):缺点是一次性的对象

     1     var obj={};
     2     obj.name="小白";
     3     obj.age=10;
     4     obj.sayHi=function () {
     5       console.log("我是:"+this.name); //我是:小白
     6     };
     7     obj.sayHi();
     8     
     9     //优化的第二种写法
    10     var obj2={
    11       name:"小明",
    12       age:20,
    13       sayHi:function () {
    14         console.log("我是:"+this.name); //我是:小明
    15       },
    16       eat:function () {
    17         console.log("吃了");
    18       }
    19     };
    20     obj2.sayHi();
    21     obj2.eat();

     7、JS的数据类型

        原始数据类型:number,string,boolean,undefined, null,object
        基本类型(简单类型),值类型:number,string,boolean
        复杂类型(引用类型):object
        空类型:undefined,null

        值类型的值在哪一块空间中存储?  栈中存储
        引用类型的值在哪一块空间中存储?  对象在堆上存储,地址在栈上存储

        var num=10;  //值类型,值在栈上
        var obj={};  //复杂类型,对象在堆,地址(引用)在栈

        值类型之间传递,传递的是值
        引用类型之间传递,传递的是地址(引用)

        值类型作为函数的参数,传递的是值
        引用类型作为函数的参数,传递的是地址

     8、JS的三种对象

    1.     内置对象----js系统自带的对象
    2.     自定义对象---自己定义的构造函数创建的对象
    3.     浏览器对象---BOM的时候讲

      instanceof :验证变量是不是对象

  • 相关阅读:
    Android.mk添加第三方jar包
    关于回调函数
    Ubuntu下GIT服务器的安装与配置
    三星I9100在Ubuntu下用Adb调试
    Android检测网络是否可用和主机是否可达
    keepalived配置文件解析系列之(一)keepalived简介及配置文件介绍
    keepalived配置文件解析系列之(三)配置文件解析过程
    C语言中的位域(bitfield)概念
    popen和变长参数库函数(va_xxx)用法举例及命令执行失败情况探讨
    《深入理解Linux内核》条目式笔记 _3
  • 原文地址:https://www.cnblogs.com/elian91/p/15394321.html
Copyright © 2020-2023  润新知