• JS


     

     

    学习网址:http://www.w3school.com.cn/js/js_intro.asp

     

    ====什么是js

       JsJavaScript的简称,是网景(Netscape)公司开发的一种基于客户端浏览器、面向(基于)对象、事件驱动式的网页脚本语言,主要有以下特点:

    JavaScript 被设计用来向 HTML 页面添加交互行为。

    JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言)。

    JavaScript 由数行可执行计算机代码组成。

    JavaScript 通常被直接嵌入 HTML 页面。

    JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)。

    所有的人无需购买许可证均可使用 JavaScript

    ====什么是js解析引擎

     1.JavaScript解析引擎就是能够―读懂JavaScript代码,并准确地给出代码运行结果的程序,

     2.JavaScript引擎本身也是程序,代码编写而成。比如V8就是用C/C++写的

     3.JavaScript引擎是程序,我们写的JavaScript代码也是程序,如何让程序去读懂程序呢?这就需要定义规则:

    比如:var a = 100+100;

    左边var代表了这是申明(declaration),它申明了a这个变量

    右边的+表示要将100100做加法

    中间的等号表示了这是个赋值语句 

    最后的分号表示这句语句结束了

    上述这些就是规则,JavaScript引擎就可以根据这个标准去解析JavaScript代码了。

    4.ECMAScript(ECMA欧洲计算机制造联合会)就是定义了所有的规则.ECMAJavaScript之间的关系:js是网景公司的 通过ECMA组织制定的标准 标准制定后不能叫JavaScript  因为版权原因

     

    5.js使用范围

    JavaScript引擎是浏览器的组成部分之一。一般情况下JavaScript引擎都是浏览器开发商自行开发的,比如:IE9ChakraFirefoxTraceMonkeyChromeV8引擎. 也就是说,只要 web控件,能加载网页的环境就能翻译js代码,对环境没有太高的要求.比如:Windows下的浏览器,os下的浏览器,安卓iOS下的浏览器,APP内置的web控件等等.

    ====hello,world

     document.write(“hello,老七”)

     alert(“你好世界”)

    ====怎么在页面中加入js

    1.直接加入(head,body)

     <head><script>document.write(666);</script></head>

     <body><script>alert(666);</script></body>

    2.外部引入(head,body)

    <head><script src="xxxx.js">  </script></head>

    <body><script src="xxxx.js">  </script></body>

    ==== js放置位置

    1.放置在head里面时:js的函数先被加载完成,随时准备被调用执行

    2.放置在body,js的函数会在界面加载过程中才开始加载,然后随时准备被调用

    3.放置在headbody中都可以,数量也没有限制,但是要尽量少,不然会影响加载速度

     

     

    ====语句和代码执行顺序

    1.具有某一个独立执行结果的代码段

    2.一般情况一行代码就是一个执行语句,执行语句结尾可以用分号也可以不用分号.

    3.如果一行有多个执行语句,之间用分号隔开

    4.浏览器的引擎执行代码顺序是在代码块里按照顺序执行(开启了异步线程除外)

    代码块通常是用大括号括起来的

    比如:<script>{document.write(“666”);document.write(“111”);}</script>比如:函数的执行体,条件语句的执行体

    异步线程后面会讲到,执行程序都是被放置在一个线程里执行任务的

    ====变量

    var a=3;

    var a,b;

    var a,b,c=4;

    解释:关键字var声明a是一个变量,里面存放了一个数字3,””=””的意思都是,把等号右边的具体数据,放在等号左边指向的地方.


    ====注释方式和原理

    1.添加注释来对 JavaScript 进行解释,或者提高其可读性

    2.单行注释: //这段文字是注释

    3.多行注释:/* 这段文字是注释 */

    4.Js代码在被解释的时候,遇到这样的表达方式,就不会去执行注释里面的东西

    ====基本运算符

    1.加减乘除(+-*/)

     var a=4;var b=5;var c=a+b;alert(c);

    求余%

     var a=5;var b=3;var c=a%b;alert(c);//2

    2.三目code?code:code;

    var a=5;var b=3; a>b?alert(666):alert(111);

    3.大于 小于 等于 不等于

    >    <   ==   !=

    4.累加累减++ --

    var a=7;alert(++a);

    var a=7;alert(a++);

    注意:①前缀是取值之间做加法,后缀是取值之后再做加法②表达不清晰时用括号:var a=7;var b=10--a;alert(b);换成var a=7;var b=10-(-a);alert(b);

    5.逗号,(①对象字面量声明,②执行依次往下)

             var array=[5,2,1,6,7]

    var a=(1,2,3,4,5);alert(a);//5

    var a=(1+2,2+2);alert(a);//4

    5.求反!

    var a=0;alert(!a);//true

    6.逻辑或||

    var a=5;var b=2;(a>3||b>3)?alert(666):alert(111);//666

    7.逻辑与&&

    var a=5;var b=2;(a>3||b>3)?alert(666):alert(111);//111

    8.位运算符(只讲一个^)相异为1相同为0

    每一位转化成机器语言然后来做对应的计算

    面试题:不通过第三个变量交换两个变量的值

    var a=10;

    var b=20;

    a=a^b;

    b=a^b;

    a=a^b;

    9.赋值表达式

    =  +=  -=  *=  /=   %=

     

    ====控制语句

    1.希望指定的条件成立时执行使用if

    if(条件表达式){执行代码块}

     

    2.希望条件成立时执行一段代码,而条件不成立时执行另一段代码使用if-else

    if(条件){}else{}

     

    3.需要选择多套代码中的一套来运行时使用if-else_if-else

    if(条件){}else if(条件表达式){}else{}

     

    4.运行次数已确定的情况下使用for

    for(语句1;语句2;语句3){执行体}

     

    5.终止整个循环用break,终止当前这次循环用continue

    for(var a=10; a>0;a--){if(a<8){break;};document.write(a)}//1098

    for(var a=10; a>0;a--){if(a>8){continue;};document.write(a)}//87654321

     

    5.希望选择执行若干代码块中的一个使用switch

    ---匹配到对应的结果后,从结果代码处依次往下执行


    ----没有匹配到结果-default


    ----匹配到对应的结果后,执行完了之后不要往下依次执行,跳出switch语句--break


    6.在指定条件为 true 时循环执行代码用while


    7.先执行一遍代码块,然后在指定条件为 true 时循环执行代码用do-while

     


    ====函数

    1.函数就是一个具有某些功能的代码块(可以看作是个工具),这个代码块只能被事件激活,或者在函数被调用时才会执行。你可以在页面中的任何位置调用.

    2.函数的表达形式:function 函数名(){}

    3.函数(工具)的使用:函数名+() 

    4.弹框 function fn1(){alert(666)}

    5.参数 function fn2(name1){alert(name1)}   fn2()

    6.返回值:函数在调用执行完以后得到的结果 function fn3(){return 1}  alert(fn3())

    return 返回的意思,就是说函数执行到这里就有一个结果产生了,函数就不继续执行了.

    7.加减乘除

    8.函数体内部调用自己:阶乘

    1自己调自己:function fn4(name1){

          document.write(name1);

          if(name1>10){ name1--; fn4(name1);}

        }//121110

    2:阶乘

    function fn5(name1){

      if(name1<1){return 1}

      else {return name1*fn5(name1-3);}

    }

    document.write(fn5(100));

     

     

     

     

    9.形参与实参

    ①形参就是取的名字,必须保证传入数据时按照定义好的形参个数和位置,这个名字在函数体里使用,实参是调用函数的时候外面传入的实际的数据

    function add(name1){alert(name1)} add(90)//name1就是形参,90就是实参

     

    ②为了防止你设计的工具,在使用的时候少传入了实参个数,我们给他设定默认值

    如果不设定默认值的话,缺少的参数,会被当做传入undefined来使用

    function fn6(name1,name2){

        if(name1==undefined){name1=0}

        if(name2==undefined){name2=0}

        return name1+name2

        }

    alert(fn6());alert(fn6(10));alert(fn6(10,10));

    ③为了防止你设计的工具,在使用的时候多传入了实参个数,我们可以在设计工具时就做出预判,并做出相关处理.如果不做处理的话,多出的参数会被省略掉

    function fn7(name1,name2){

        if(arguments.length!=2){document.write("你是不是傻,fn7这个函数只需要2个参数")}

        return name1+name2

        }

    document.write(fn7(10,10,10,10,10))

    :对象的知识点(常用在匿名函数)arguments表示实参对象,通过这个对象的length属性可以获得实参的个数,arguments除了可以获取实参个数,常用的还有获取实参和获取使用实参的目标函数function fn8(a,b){return arguments[0]+arguments[1]}

    function fn9(a){if(a==1){return 1};

    return arguments[0]*arguments.callee(arguments[0]-1)} 

    10.函数作为参数(重中之重)

    函数是我们设计出来的工具,也可以作为参数传入另外一个函数(传入以后怎么用就是另外的函数的事了)

    ①传入的函数没有参数没有返回值

    function fn(){

        document.write("华清远见是一个培养科学家艺术家的地方");

        }

    function fn10(name1){

        document.write("公司简介:");

        name1();

    }

    fn10(fn)

    ②传入的函数有参数没有返回值

    function fn(n1){

        document.write(n1*n1);

        }

    function fn11(name1,name2){

         name1(name2)

    }

    fn11(fn,8);

    ③传入的函数有参数有返回值

    function fn(n1,n2){

        return n1+n2;

        }

     

     

    function fn12(name1,name2,name3){

        return name1(name2,name3)

        }

    document.write(fn12(fn,10,20));

    ④传入的函数在调用的时候设计(回调)

    function fn13(n1,n2){

        n1(n2);

        }

    fn13(function fn(name1){document.write(name1)},666);

     

    11.变量的作用域

    作用域指声明的变量使用的范围,通常理解为大括号里面和外面

    function fn(){

        var a = 10;

        }  

    document.write(a);//什么也不显示:外面访问不了里面(局部)的变量

    var b = 7; 

    function fn1(){

        document.write(b);

        }

    fn1();//7:里面(局部)能访问到外面(全局)的变量

    ③局部和全局同名变量优先级

    var a = 7; 

    function fn(){

        var a = 10;

        document.write(a);

        }

    fn();//10:在这个函数内部局部变量会覆盖掉全局变量

    document.write(a);//7

    ④声明变量的位置不会影响空间的开辟,只会影响初始化数据的位置//内部有函数时声明比变量高一级

    function fn(){

        document.write(a);

        var a = 10;

        }

    fn();//undefined  不是什么都不显示而是undefined说明变量声明了但是还没有放数据进去:引擎在编译的时候会先把函数体内的所有声明的变量(不管位置在哪里),全部先开辟一个空间,然后到了var a = 10的地方,给它赋值10

     

     

     

    ====闭包

    有一个问题,函数外面访问不了函数里面的变量.用闭包就可以实现这个需求

    1.函数内部的变量都会保存在它自己内部,通过外部调用内部的函数达到访问内部变量的目的,就是闭包

     

    2.函数内部的函数

     function fn(){

        var a = 20;

        function fm(){return a}

        return fm();

        }

    document.write(fn());//20

    3.闭包

    function fn(){

        var a = 20;

        function fm(){return a}

        return fm;

        }

    document.write(fn()());//20  fn()的结果是一个函数,在加一个括号fn()()就是调函数.

    ====匿名函数:不取名字的函数

    1.小括号

    小括号的意思是指向一个空间

    var a = 10

    var b = 10

    var c = (a+b)+10//a+b的结果放在内存中的,怎么用它呢,去找到20这个数值(指向)

    function fn(){}//指向参数对象

    if(a>10){}//指向存放true或者false值的空间

    function fn(){}; fn()//执行函数:指向函数对象执行

    (function fn(){})// 指向函数对象:整条语句代表 指向存放了这个函数工具的空间

    (function fn(){})()//指向函数对象的并且调用了函数

    2.匿名函数

     就是没有取名字的函数,要执行函数,必须用名字加上小括号,没有取名字的函数怎么调用呢.

    ①直接作为参数传入函数的时候

    function fn(n1,n2){n1(n2)}

    fn(function(name1){document.write(name1)},666);

    ②利用小括号的功能

    (function(){document.write(666)})();

    ====对象                                      

    1.对象就是一个具体的东西,它很复杂

    比如:一个手机就是一个对象,它具有重量,长度,宽度等等特性,还具有打电话,发短信,玩游戏等等功能.//20  “hello”

    再比如:一个document就是一个对象,它具有title 文档标题,bgColor文档背景颜色等等特性,write动态向页面写入内容,getElementById得到对应id的标签等等功能

    2.一个对象存在(创建)就会在内存中有一个对应的空间.

    3.创建和操作对象

    --键值对的方式,每一对键值对结尾都有逗号.

    var person1 = {};

    //这样就创建好了一个对象,名字叫person1,这个对象既没有特性(属性),也没有功能(方法)

     

    var person2 = {name:"莫文蔚",englishName:"karen",age:46,};

    //这样就创建好了一个对象,名字叫person2,它有三个属性:分别是name englishName age

     

    var person3 = {name:"karen",kill:function(){alert("pentakill!!!")},};

    //这样就创建好了一个对象,名字叫person3,他有一个属性:name,一个方法:kill

     

    ②使用属性和方法

    var person3 = {name:"karen",kill:function(){alert("pentakill!!!")},};

    alert(person3.name);alert(person3["name"]);

    person3.kill(); person3["kill"]()

     

    ③访问的属性不存在

    访问的过程就是指向,如果指向的地方找不到(没有),不会出错而是返回一个undefined.

     

    ④添加新属性和方法

    var person = {};

    person.name = "karen"

    person.kill = function(){document.write("pentakill!!")}

     

    4.常用创建对象的方式

    var person1 = {};

    var person2 = new Object();

    Person = function(name){//构造函数的等号左边的名字首字母大写

        this.name = name;

        this.sing = function(){document.write("阴天,在不开灯的房间")};

        }

    var person3 = new Person("莫文蔚");

     

    function creatObject(){

        var person = new Object();

        return person

        }

    var person4 = creatObject();

     

    function creatPerson(name,age){

        var person = new Object();

        person.name= name;

        person.age = age;

        return person

        }

    var person5 = creatPerson("莫文蔚",46);

    Person5.name

     

     

    ====数据类型

    1.数字

     整数,小数 10  1.5

    2.字符串

    ①可以通过String对象创建

    ②由单引号or双引号引起来的文本,如果引号里面还有引号整个字符串是开始和结束之间的文本

    “karen” ‘boy’ “The ‘girl’ is the most strange animal in the world”

    3.布尔值

    真假:true false

    这些数据会判定为false:undefined NaN(代表不是数字) null “” 0 

    4.null()

    表示无值

    5.undefined(未定义)

    表示没有初始化

    NaN(非数值对象)

     

    6.对象

    自定义的:

    提供的:

     

    ====对象

    点进去哪里不会查哪里:http://www.w3school.com.cn/jsref/index.asp

    JavaScript 对象

    Array Boolean Date Math Number String RegExp Functions Events

    Browser 对象

    Window Navigator Screen History Location

    HTML DOM 对象

    Document Element Attribute Event

    HTML 对象

    <a><area><audio><base><body><blockquote><button><canvas><col><colgroup><datalist><del><details><dialog><embed><fieldset><form><frame><frameset><iframe><img><ins><input> button<input> checkbox<input> color<input> date<input> datetime<input> datetime-local<input> email<input> file<input> hidden<input> image<input> month<input> number<input> password<input> range<input> radio<input> reset<input> search<input> submit<input> text<input> time<input> url<input> week<keygen><label><legend><li><link><map><menu><menuitem><meta><meter><object><ol><optgroup><option><param><progress><q><script><select><source><style><table><td><th><tr><textarea><time><title><track><video>

    ====Array

    创建(2)

    var a = [1,”qwe”,!5];

    var a = new Array()

    使用

    a   a[0]

    属性:

    constructor 所建立对象的函数参考(打印出来看看)

    length 获取数组元素的个数,即最大下标加1

    方法:

    concat(array1,array2)将两个或两个以上数组值连接起来,合并后返回结果//结果是3个或以上数组

    join(“666”) 将数组中元素合并为字符串,666为分隔符(666可以改).如省略参数则直接合并,不再分隔

    pop() 移除数组中的最后一个元素并返回该元素//数组改变

    shift() 移除数组中的第一个元素并返回该元素//数组改变

    unshift(value)为数组的开始部分加上一个或多个元素,并且返回该数组的新长度//数组改变

    push(value) 在数组的末尾加上一个或多个元素,并且返回新的数组长度值//数组改变

    reverse() 颠倒数组中元素的顺序,反向排列

    sort() 按照元素的字母顺序排列,如果不是字符串类型则转换成字符串再排序,返回排序后的数组 //1 12 2

    splice() 为数组删除并添加n个新的元素//a.splice(0,2,"野区一霸",666)//删除从0下标开始的2个元素,并把 "野区一霸",666这两个元素放在数组最前面.

    toString() 将数组所有元素返回一个字符串,其间用逗号分隔

     

    ====字符串

    属性

    length 返回字符串的字符长度

    方法:

    +可以连接两个字符串,非字符串的数会转化成字符串再+

    big() 把字符串中的文本变成大字体(<BIG>)

    blink() 把字符串中的文本变成闪烁字体(<BLINK>)

    bold() 把字符串中的文本变成黑字体(<B>)

    fontcolor(color)设置字符串中文本的颜色(<FONT COLOR=>)

    fontsize(size)给字符串设置字号(<FONTSIZE=>)

    italics() 把字符串中的文本变成斜字体(<I>)

    small() 把字符串中的文本变成小字体(<SMALL>)

    strike() 把字符串中的文本变成划掉字体(<STRIKE>)

    sub() 把字符串中的文本变成下标字体((SUB>)

    sup() 把字符串中的文本变成上标字体(<SUP>)

    charAt(index) 返回指定索引处的字符

    concat(string2)连接两条或多条字符串并返回//原值不改变

    replace(regex, newString)将字符串中的某些字符替换成其它字符并返回//原值不改变

    split(delimiter)将字符串分配为数组

    substr(startIndex, length) startIndex,length个字符

    substring(startIndex, endInldex) startIndexendIndex之间的字符,不包括endIndex

    toLowerCase() 把字符串中的文本变成小写

    toUpperCase() 把字符串中的文本变成大写

    link(url)给字符串添加href(<A HREF=>) //src  href  url 

     

    ====Math

    Math就是个对象,不用创建

    Math

    属性

    E 欧拉常量,自然对数的底(约等于2.718)

    LN2 2的自然对数(约等于0.693)

    LN10 10的自然对数(约等于2.302)

    LOG2E 2为底的e的对数.(约等于1.442)

    LOG10E 10为底的e的对数(约等于0.434)

    PI π的值(约等于3.14159)

    SQRT1_2 1/2(0.5)的平方根(l除以2的平方根,约等于o.707)

    SQRT2 2的平方根(约等于1.414)

     

    方法:

    acos(x) 返回数字的反余弦值

    asin(x) 返回数字的反正弦值

    atan(x) 返回位于-PI/2 PI/2 的反正切值

    atan2(y,x) 返回(x,y)位于 -PI PI 之间的角度

    exp(x) 返回 E^x

    pow(x,y) 返回 y^x 的值

    log(x) 返回底数为E的自然对数

    sqrt(x) 返回数字的平方根

      

    abs(x) 返回数字的绝对值

    ceil(x) 返回 x区间的最大整数

    floor(x) 返回 x 区间的最小整数

    max(x,y) 返回 x y 之间较大的数

    min(x,y) 返回 x y 之间较小的数

    round(x) 四舍五入后取整

    cos(x) 返回一个数字的余弦值

    sin(x) 返回数字的正弦值

    tan(x) 返回一个角度的正切值

    random() 返回位于 0 1 之间的随机数

     

    ====Date 

    var a = new Date();

    方法:

    getDay() 返回一周中的第几天(0-6)

    getYear() 返回年份.2000年以前为2,2000(包含)以后为4

    getFullYear() 返回完整的4位年份数

    getMonth() 返回月份数(0-11)

    getDate() 返回日(1-31)

    getHours() 返回小时数(0-23)

    getMinutes() 返回分钟(0-59)

    getSeconds() 返回秒数(0-59)

    getMilliseconds() 返回毫秒(0-999)

    getTime() 返回从1970110:0:0到现在一共花去的毫秒数

    getTimezoneoffset() 返回时区偏差值,即格林威治平均时间(GMT)与运行脚本的计算机所处时区设置之间相差的分钟数)

    parse(dateString) 返回在Date字符串中自从19701100:00:00以来的毫秒数

    setYear(yearInt) 设置年份.2位数或4位数

    setFullYear(yearInt)设置年份.4位数

    setMonth(monthInt) 设置月份(0-11)

    setDate(dateInt) 设置日(1-31)

    setHours(hourInt) 设置小时数(0-23)

    setMinutes(minInt) 设置分钟数(0-59)

    setSeconds(secInt) 设置秒数(0-59)

    setMilliseconds(milliInt) 设置毫秒(0-999)

    setUTCFullYear(yearInt) 依据国际时间来设置年份

    setUTCMonth(monthInt) 依据国际时间来设置月(0-11)

    setUTCDate(dateInt) 依据国际时间来设置日(1-31)

    setUTCHours(hourInt) 依据国际时间来设置小时

    setUTCMinutes(minInt) 依据国际时间来设置分钟

    setUTCSeconds(secInt) 依据国际时间来设置秒

    setUTCMilliseconds(milliInt)依据国际时间来设置毫秒

    setTime(timeInt) 设置从197011日开始的时间.毫秒数

    toGMTString() 根据格林威治时间将Date对象的日期(一个数值)转变成一个GMT时间字符串,:Weds,15 June l997 14:02:02 GMT

    toUTCString() 根据通用时间将一个Date对象的日期转换为一个字符串

    toLocaleString() Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式

    toSource() 显示对象的源代码

    toString() 将日期对象转换为字符串

    UTC(yyyy, mm, dd, hh, mm, ss, msec)返回从格林威治标准时间到指定时间的差距,单位为毫秒

     

    你好!如果你有什么更好的建议或意见,请在评论区留言。感谢你的阅读!
  • 相关阅读:
    js 前端 table 导出 excel
    js调用RadioButton1
    柱状图
    html锚点定位
    遍历所有lable并赋值
    MiniUI 在线示例
    sql更新语句
    生成word
    打开word
    操作word
  • 原文地址:https://www.cnblogs.com/YCxiaoyang/p/7376408.html
Copyright © 2020-2023  润新知