zoukankan      html  css  js  c++  java
  • 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 :验证变量是不是对象

  • 相关阅读:
    ACM的算法分类 2015-04-16 14:25 22人阅读 评论(0) 收藏
    初学Larevel 2014-08-21 11:24 90人阅读 评论(0) 收藏
    初学PHP&MySQL 2014-05-31 12:40 92人阅读 评论(0) 收藏
    codeforces 570 E. Pig and Palindromes (dp)
    codeforces 570 D. Tree Requests (dfs序)
    poj 2157 Maze (bfs)
    cf 570 C. Replacement (暴力)
    cf 570B B. Simple Game(构造)
    cf 570 A. Elections
    hdu 1429胜利大逃亡(续) (bfs+状态压缩)
  • 原文地址:https://www.cnblogs.com/elian91/p/15394321.html
Copyright © 2011-2022 走看看