js从入门到入门

js 学习笔记

一 入门级别

​ html是定义网页的内容,CSS规定网页的布局,JS是对网页行为进行编程;

​ js是互联网上对位流行的脚本语言,这门语言可以用于HTML和web,更为广泛的用于服务器,PC,笔记本,电脑,平板等设备。

​ js 的用法,HTML的脚本必须位于标签之间,脚本可被放置在HTML页面和和部分中间。

​ 外部的就是文件,我们需要在标签内的SRC属性中设置该js文件。

需要注意的细节问题
	1.在标签中填写onclick事件调用函数时,不是onclick = 函数名,而是onclick = 函数名()
	2.外部javajscript文件不使用<script>标签,直接写js代码。
	3.HTML输出流中使用document。write代码

1.1 JS中的输出

  • JS 中通过不同的方式进行输出数据
    • 使用window.alert()弹出警告框
    • 使用document.write()方法件内容写到HTML文档中
    • 使用innerHTML写入到HTML元素
    • 使用console.log()写入到浏览器的控制台
  • 重点细节
    • 使用document.write()仅仅向文档输出写内容,如果在文档以完成加载后执行document.write,整个HTML页面将会被覆盖。

1.2 JS基础知识

1.2.1 访问对象方法

​ 可以通过以下的方法创建对象方法

格式:
	name: function(){
	
	}
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<p>创建和使用对象方法。</p>
<p>对象方法作为一个函数定义存储在对象属性中。</p>
<p id="demo"></p>
<script>
var person = {
    firstName: "John",
    lastName : "Doe",
    id : 5566,
    fullName : function() 
	{
       return this.firstName + " " + this.lastName;
    }
};
document.getElementById("demo").innerHTML = person.fullName();
</script>
	
</body>
</html>
1.2.2 js函数

​ 函数石油事件驱动的或者当它被调用的时候执行的可重复使用的代码块。

  • JS函数语法,函数就是保狗仔花括号中的代码块,前面使用关键词function:
function funcitonname()
{
	//执行代码
}

中间需要注意的是关键词必须是小写的,并且必须以与函数名称相同的大小来调用函数。
  • 调用带参数的函数
在调用函数的时候你可以向其传递值,这些值就是被称之为参数,这些参数可以在函数中使用,中间的参数通过逗号进行隔开。

function myFunction(var1,var2)
{
	//代码
}
  • 带有返回值的函数

    function myFunction(){
      var x = 5;
      return x;
    }
    
    注意:函数调用将被返回值取代
    
1.2.3 js 作用域

​ 作用域是可访问变量的集合,在函数中存在的变量和Java语言中的变量的语言是一样的,比如:局部变量和全局变量的相关知识点,两者是相类似的。

1.2.4 js 事件

​ 常见的HTML事件

事件描述
onchangeHTML 元素改变
onclick用户点击 HTML 元素
onmouseover用户在一个HTML元素上移动鼠标
onmouseout用户从一个HTML元素上移开鼠标
onkeydown用户按下键盘按键
onload浏览器已完成页面的加载
1.2.5 js字符串

​ js字符串用于储存和处理文本;字符串可以存储系列字符如“zhouzongi”,字符串可以插入引号中的任何字符,可以使用单引号或者双引号。我们也可以通过索引位置来访问字符串的每个字符。特殊的字符串如下,如防止中间进行隔断的情况:

代码输出
单引号
"双引号
\反斜杠
\n换行
\r回车
\ttab(制表符)
\b退格符
\f换页符

js中可以使用字符常见:var frist1 = “jone”

但是我们也可以使用new关键字将字符串定义为一个对象: var frist2= new String(“John”)

​ 注意:此时的frist1===frist2 //结果是错误的,因为1是字符串,2是对象。

1.2.6 js循环
  • 使用for循环:
for (var i = 0;i<cars.length ;i++){
	document.write(cars[i]="<br>");
}
  • for /in循环

    for/in循环遍历对象的属性
    var person={fname:"Bill",lname:"Gates",age:56}; 
     
    for (x in person)  // x 为属性名
    {
        txt=txt + person[x];
    }
    
1.2.7 js错误
语法:

try {
    ...    //异常的抛出
} catch(e) {
    ...    //异常的捕获与处理
} finally {
    ...    //结束处理
}
1.2.8 拓展
  • HTML表单验证也可以通过浏览器来自动完成,若表单字段的值为空,那么required属性会阻止表单提交,运行的代码如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>

<form action="demo_form.php" method="post">
  <input type="text" name="fname" required="required">
  <input type="submit" value="提交">
</form>


</body>
</html>
  • 约束验证 HTML 输入属性
属性描述
disabled规定输入的元素不可用
max规定输入元素的最大值
min规定输入元素的最小值
pattern规定输入元素值的模式
required规定输入元素字段是必需的
type规定输入元素的类型
  • 约束验证 CSS 伪类选择器
选择器描述
:disabled选取属性为 “disabled” 属性的 input 元素
:invalid选取无效的 input 元素
:optional选择没有"optional"属性的 input 元素
:required选择有"required"属性的 input 元素
:valid选取有效值的 input 元素
  • let关键字解决的问题是,保持let命令所在的代码块{}内饰有效的。

    实例

    var i = 5; for (var i = 0; i < 10; i++) { // 一些代码… } // 这里输出 i 为 10

    尝试一下 »

    使用 let 关键字:

    实例

    let i = 5; for (let i = 0; i < 10; i++) { // 一些代码… } // 这里输出 i 为 5

    尝试一下 »

    在第一个实例中,使用了 var 关键字,它声明的变量是全局的,包括循环体内与循环体外。

    在第二个实例中,使用 let 关键字, 它声明的变量作用域只在循环体内,循环体外的变量不受影响。

  • 相同点:在函数体内使用var和let关键字生命的变量有点类似,它们的作用与都是局部的。在函数体外和代码外使用var和let嘎UN就爱你自生命的白能量有点类似,他的作用域都是全局的。 在相同的作用域或者块级作用域中,不能使用let关键字来重置var关键字。 var关键字声明的变量在任何地方都能够修改。

1.2.9 json

​ JSON的用途:用于存储和传输数据的格式,通常用于服务端向网页传递数据。这个这个常用的地方是通过后台的数据传递实现异步交互。

1.2.10 异步编程

​ 对比于同步来说,同步的执行就是按照代码的顺序进行执行,然而异步则是不按照代码顺序执行。

​ 在此引入的setTimeout就是一个消耗时长的过程,他的第一个参数是回调函数,第二个参数是毫秒数,这个函数执行之后会产生一个子线程,然后通过执行回调函数“print”,在命令行输出“Time out”。

setTimeout(function () {
    document.getElementById("demo").innerHTML="RUNOOB!";
}, 3000);
1.2.11 JS promise
  • 目的promise目的是更加优雅地书写复杂的异步任务。

  • 构建一个promise对象

    new Promise(function (resolve, reject) {
        // 要做的事情...
    });
    

二 js的函数

2.1 js函数的定义

​ 在上述的教程中,我们已将了解到函数的声明的语法

function 函数名称(参数中间通过,隔开){
//执行的代码
}

函数声明后不会进行执行,会在我们需要的时候调用到。函数的声明不是一个可执行的语句,所以不需要通过分号结束

function myFunction(a, b) {
    return a * b;
}

下面的函数实际上是一个执行语句,所以是通过分号结尾(也就是函数的调用)

var x = function (a, b) {return a * b};
var z = x(4, 3);

2.2 Function()构造函数

​ 一般来说不需要使用构造函数,但是我们仍然需要进行了解,举例代码如下:

var myFunction = new Function("a", "b", "return a * b");

var x = myFunction(4, 3);

实际上,我们不需要使用构造函数,完全可以通过另外一种写法:声明函数并且调用函数。

var myFunction = function (a, b) {return a * b};

var x = myFunction(4, 3);

2.3 函数的提升(Hosting)

​ 应用范围:在声明变量与函数的声明。 提升就是将当前的作用域提升到期那面的行为。因此函数可以在声明之前调用:

myFunction(5);

function myFunction(y) {
    return y * y;
}

使用表达式定义函数时无法提升。

2.4 自调用函数

函数表达式可以“自调用",自调用表达式会自动调用,如果表达式后面紧更着(),则会自动调用,不能自调用声明函数,通过添加括号,来说明它是一个函数表达式:

(function () {
    var x = "Hello!!";      // 我将调用自己
})();

2.5 函数是对象

​ js函数有属性和方法

function name(a,b){
	return arguments.length;
}

其中arguments.length属性返回函数调用过程接收到的参数的个数。

toString()方法将函数作为一个字符串返回

function myFunction(a, b) {
    return a * b;
}

var txt = myFunction.toString();

2.6 函数显示参数(paramenters)与隐式参数(Arguments)

  • 区别:函数显示参数在函数定义时列出,函数隐式参数在函数调用的时候传递给函数真正的值。

  • 如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名称,只能使用arguments对象来调用。

    • arguments对象:包含了函数调用的参数数组,通过这种方式你可以很方便地找到最大的一个参数的值。通过这种方式可以很方便的找到最大的参数值,隐式函数进行值传递,函数仅仅只是获取值。

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>菜鸟教程(runoob.com)</title>
      </head>
      <body>
      
      <p>计算所有参数之和:</p>
      <p id="demo"></p>
      <script>
      /*代码中arguments.length 表示的是参数的个数*/
      function sumAll() {
          var i, sum = 0;
          for(i = 0; i < arguments.length; i++) {
              sum += arguments[i];
          }
          return sum;
      } 
      document.getElementById("demo").innerHTML =
      	sumAll(1, 123, 500, 115, 44, 88);
      </script>
      
      </body>
      </html>
      求出的所有参数之和
      871
      

2.7 函数的调用(有四种调用方式)

  • This关键字,在JS中,this指向函数执行的当前对象

  • 全局变量:当函数没有被自身的对象调用时,this的值就会变成全局变量对象,在web浏览器中全局变量是浏览器窗口(window对象)。该实例返回this的值是window对象。

    function myFunction() {
        return this;
    }
    myFunction();                // 返回 [object window]
    
    
  • 函数作为方法调用

    • 下列实例创建了一个对象,对象有两个竖向以及一个方法(其中myObject是函数的所有者,实例中的this值为myObject对象)

      var myObject = {
          firstName:"John",
          lastName: "Doe",
          fullName: function () {
              return this.firstName + " " + this.lastName;
          }
      }
      myObject.fullName();         // 返回 "John Doe"
      
  • 使用构造函数调用函数

    • 如果函数调用前使用了new关键字,则是调用了构造函数,这看起来像是创建了新的函数,但实际上js函数是重新创建的对象;

      // 构造函数:
      function myFunction(arg1, arg2) {
          this.firstName = arg1;
          this.lastName  = arg2;
      }
       
      // This    creates a new object
      var x = new myFunction("John","Doe");
      x.firstName;                             // 返回 "John"
      

      构造函数的调用会创建一个新的对象,新对象会继承构造函数的属性和方法,构造函数中this关键字没有任何的值,this的值在函数调用实例化对象(new object)时创建。

  • 作为函数方法调用函数

    • 在js中,函数是对象,JS函数有他自己的属性和方法,call()和apply()是预定义的函数方法,两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。

    • 实例

      function myFunction(a, b) {
          return a * b;
      }
      myObject = myFunction.call(myObject, 10, 2);     // 返回 20
      
      function myFunction(a, b) {
          return a * b;
      }
      myArray = [10, 2];
      myObject = myFunction.apply(myObject, myArray);  // 返回 20
      

2.8 js闭包

  • 在js中,变量的声明如果不适用var关键字,那么他就是一个全局变量,即便他在函数中定义。

二 高级JS

2.1 js DOM

  • document.wrie()可以直接用于向HTML输出流写内容

  • 改变HTML内容最简单的方法是使用innerHTML属性,使用的语法是document.getElementById(id).innerHTML = “XXXXXXX”;

  • 改变HTML的属性,使用的语法是:

    document.getElementById(id).attribute=新属性值
    

    实例

    <img id="image" src="smiley.gif">
    
    <script>
    document.getElementById("image").src="landscape.jpg";
    </script>
    
  • 改变HTML的样式

    document.getElementById(id).style.property=新样式
    

    实例

    <script>
    document.getElementById("p2").style.color="blue";
    document.getElementById("p2").style.fontFamily="Arial";
    document.getElementById("p2").style.fontSize="larger";
    </script>
    
  • 对于事件作出反应,向button元素分配onclick事件

    <script>
    document.getElementById("myBtn").onclick=function(){displayDate()};
    </script>
    
  • onload和onunload事件

    两个事件会在用户进入或离开页面是被触发,onload事件可以用于检测访问者的浏览器类型和浏览器版本,并基于这些纤细加载网页的正确版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值