JavaScript-第一周学习总结

JavaScript-第一周学习总结:

1.JavaScript的实现

JavaScript是一种动态弱类型的语言。

JavaScript 中包含有 ECMAScript(核心),DOM (文档对象模型),BOM(浏览器对象模型)。

其中 :DOM (Document Object Model)是一个应用编程接口(API),用于在HTML中使用扩展的XML。

DOM通过创建表示文档的树 ,让开发者可以随心所欲地控制网页的内容和结构。使用DOMAPI,可以轻松地删除,添加,替换,修改节点。

2.对于< script >元素的学习;

1.js的书写位置 :同 css 一样 ;

  • ​ 行内式 ;
  • ​ 内嵌式;
  • ​ 外部文件;

2.js标签的位置。

  1. 如果放在< head >标签内,可以将JavaScript文件,与CSS文件都集中放在一起 ,但是如果放在< head > 中就必须把JavaScript代码下载完毕后才可以渲染页面 ,导致页面渲染的明显延迟 。

  2. 将js引用标签放在< body >中 ,放在< body >元素中的页面内容后面 ,这样就页面会处理JavaScript代码之前完全渲染页面 ,用户就会感到加载速度更加快了。

  3. 推迟执行脚本:那么有没有办法解决 1 中的问题 ,HTML4.01中定义了一个叫defer的属性。 设置defer属性,相当于告诉浏览器立即下载,但延迟执行。 但如果有两个以上的js文件,那么就无法保证js文件的执行顺序。所以最好只包含一个这样的脚本。

  4. 异步执行脚本:添加async属性 ,目的是告诉浏览器,不必等脚本下载和执行完后再加载页面,也不必等到该异步脚本下载和执行后再加载其他脚本。(一般不用);

3.js的语法以及注意事项
  1. 注意事项:ECMAScript中一切都区分大小写,无论是变量,函数名还是操作符,都区分;

  2. 标识符 :是由字母,下划线,美元符号和数字组成,但第一个字符是由字母,下划线(—),美元符号,并且使用驼峰命名法来命名;

  3. 在脚本开头加上“use strict”;可以进入严格模式。

  4. 变量可以用 var , let ,const 声明 , ECMAScript中变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值的方块(命名占位符),在染色(保存值)以前是不知道它的颜色(类型)的。

  5. var 关键字 :使用var 可以声明一个变量 ,使用这个关键字声明的变量会自动提升到函数作用域顶部;

  6. let 关键字 :和var作用差不多,但有一些区别,最明显的区别是 :1. let声明的范围是块作用域,而var声明的范围是函数作用域。 2.let也不允许同一个块作用域中出现冗余声明。3.使用let在全局作用域中声明的变量不会成为window的对象属性。

  7. const 关键字 :使用它声明变量时必须同时初始化变量,并且该变量为只读变量。

js的数据类型。

Number类型 (数值), boolean类型(布尔值) ,string类型(字符串) , object类型(对象) ,function类型 (函数) , symbol类型(符号) ,undefined类型(未定义);

  1. 可以使用typeof操作符来验证数据类型。
  2. number类型:整数,浮点数,不要判断两个浮点数相等。
  3. 最小值:Number.MIN_VALUE,这个值为: 5e-324
    最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
    无穷大:Infinity
    无穷小:-Infinity
  4. string类型在这里插入图片描述
  • 通过length属性用来获取字符串的长度 ;

  • 使用 + 可以连接字符串

  1. boolean类型

    • Boolean字面量: true和false,区分大小写

    • 计算机内部存储:true为1,false为0。

  2. unfinished类型:undefined表示一个声明了没有赋值的变量,变量只声明的时候值默认是undefined

  3. null类型 :为空值,如果没有想要给赋的值,就赋值为null;

数据转换
  1. 转化为string类型:
  • toString()

    var num = 1 ; num.toString() ;
    
  • String()强制转换

    var num = 1 ; String(num); 
    
  • 隐式转换 ,通过和字符串拼接来转换;

  1. 转换为number类型:

    1.number()

Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN

​ 2.parseInt()

var num1 = parseInt("12.3abc");  // 返回12,如果第一个字符是数字会解析知道遇到非数字结束,'.'为字符
var num2 = parseInt("abc123");   // 返回NaN,如果第一个字符不是数字或者符号就返回NaN

​ 3.parseFloat

parseFloat()把字符串转换成浮点数,parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个. 遇到第二个.或者非数字结束如果解析的内容里只有整数,解析成整数

​ 4.隐式转换

​ 通过’-’,’/’,’*'运算符可以转换为number类型。

  1. 转换为Boolean类型

    Boolean(),0 ‘’(空字符串) null undefined NaN 会转换成false 其它都会转换成true。

运算符

基本与c语言相同 ;但有需要注意的地方:

  1. == 会默认转换数据类型 ,转为数字型 。
  2. == = 为全等于 (值 , 数据类型完全一致) !==为不全等于;
  3. 优先级从高到底
    1. () 优先级最高
    2. 一元运算符 ++ – !
    3. 算数运算符 先* / % 后 + -
    4. 关系运算符 > >= < <=
    5. 相等运算符 == !== != ===
    6. 逻辑运算符 先&& 后||
    7. 赋值运算符
语法

与c语言相通

数组
  1. 通过new创建 ,
   var a = new Array() ;
  1. 利用数组字面量:
// 创建一个空数组
var arr1 = []; 
// 创建一个包含3个数值的数组,多个数组项以逗号隔开
var arr2 = [1, 3, 4]; 
// 创建一个包含2个字符串的数组
var arr3 = ['a', 'c']; 

// 可以通过数组的length属性获取数组的长度
console.log(arr3.length);
// 可以设置length属性改变数组中元素的个数
arr3.length = 0;

函数
  • 函数声明

    function 函数名(){
      // 函数体
    }
    
  • 函数表达式

    var fn = function() {
      // 函数体
    }
    
  • 函数中的arguments的使用

    JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组,因此及可以进行遍历。

4.全局变量和局部变量
  • 全局变量

    在任何地方都可以访问到的变量就是全局变量,对应全局作用域

  • 局部变量

    只在固定的代码片段内可访问到的变量,最常见的例如函数内部。对应局部作用域(函数作用域)

//不使用var声明的变量是全局变量,不推荐使用。
//变量退出作用域之后会销毁,全局变量关闭网页或浏览器才会销毁
function fn(){
 var i = 0 ;//i为局部变量;
 console.log(i);
}
function fn2(){
  i = 0 ;//i为全局变量;
  console.log(i);
}
5.预解析
  1. 意义:预解析js引擎会把js里面所有的var和function提升到当前作用域的前面。

  2. 变量预解析(变量提升) , 把所有的变量声明提升到当前的作用域最前面,但是不提升赋值操作

    function fn(){
        console.log(i);//undefined
        var i = 0;
    }
    //等价于
    funtion fn(){
        var i;
        console.log(i);
        i = 0;
    }
    
  3. 函数预解析(函数提升), 把所有的函数声明提升到当前的作用域最前面,但是不调用函数

  4. 注:

    //有以下代码:
    function fn(){
        var a = b = c = 9;//等价于:var a = 9; b = 9; c = 9;
         console.log(a);//9
         console.log(b);//9
         console.log(c);//9
    }
     	 console.log(b);//9
    	 console.log(c);//9
    
对象
  1. 现实生活中:万物皆对象,对象是一个具体的事物,一个具体的事物就会有行为和特征。
    举例: 一部车,一个手机
    车是一类事物,门口停的那辆车才是对象
    特征:红色、四个轮子
    行为:驾驶、刹车(粘贴而来)
  • 事物的特征在对象中用属性来表示。
  • 事物的行为在对象中用方法来表示。
  1. 创建对象的方法

    1. 利用字面量

      var obj = {
        name: 'zs',//用逗号分隔,用冒号引:
        age: 18,
        sex: 'man',
        sayHi: function () {
          console.log(hi~);
        }
      };
      
      
    2. 利用new Object 创建对象

      var Star = new Object();
        star.name = 'ldh';//用 等于号 = 引 ,用分号分割 ;
        star.age = 35;
        star.job = 'actor';
        star.sayHi = function(){
        console.log('hi~');
      }
      
    3. 利用函数创建对象

      function Star(name,age,job){
        this.name = name;//用this指向对象
        this.age = age;
        this.job = job;
        this.sayHi = function(){
        	console.log('Hello,everyBody');
        }
      }
      var p1 = new Star('张三', 22, 'actor');//用new在内存中创建一个空的对象
      
    4. 遍历对象

      //用for in遍历对象
      var obj = {
      };
      for (var key in obj){
          console.log(obj[k]);
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值