博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS基础
阅读量:6655 次
发布时间:2019-06-25

本文共 9989 字,大约阅读时间需要 33 分钟。

ECMAScript是一个标准,而这个标准是需要各个厂商去实现的。 不同的浏览器厂商对该标准会有不同的实现 浏览器          Javascript实现方式 FireFox           SpiderMonkey           Internet Explorer     JScript/Chakra Safari                              JavaScriptCore Chrome                               v8 Carakan                               Carakan ============================================================================ 控制浏览器弹出一个警告框     alert("我是一个警告框"); 向body中输出一个内容     document.white("我是向body输出的内容"); 向控制台输出一个内容     console.log("我是向控制台输出的内容"); ==================================================================================
JS代码的加载位置: 1. 可以将JS代码写在onclick属性中,当点击按钮时,JS会执行;但是不方便维护,所以不建议使用      2.  可以将JS代码写在href属性中,当点击链接时,会执行JS     点击     点击  可以阻止a标签的跳转行为 3.  可以将JS代码写在外部JS文件中,然后通过script标签引入     而且写到外部的JS文件可以在不同的页面中引用,也可以利用浏览器的缓存机制,一般推荐使用这种方法     
==================================================================================
JS严格区分大小写 JS中的每一条语句都以;结束,但是如果不写;浏览器也会自动添加,但是会消耗一些系统资源,有时候浏览器会加错分号,所以尽量在开发中就书写分号 JS中会自动忽略多个空格和换行
=====================================================================
字面量:都是一些不可改变的值,可以直接使用,但是一般都不直接使用 变量:变量可以用来保存字面量,而且变量的值是可以任意改变的 变量的声明 var a;
======================================================================
标识符 在JS中所有的可以由我们自主命名的都可以称为标识符。例如:变量名、函数名、属性名等都是标识符 标识符的命名规则:     1.标识符可以包含字母、数字、 _ $     2.不能以数字开头     3.不能时JS中的保留字或关键字     4.一般采用驼峰命名法 myEnglishName:首字母小写,每个单词的开头字母大写,其余字母小写   JS底层保存标识符时实际上是采用的是Unicode编码
=========================================================================
数据类型指的就是字面量的类型。在JS中,共有6种数据类型: String :字符串类型 Boolean :布尔类型 Number :数值 Null :空值 Undefined :未定义 Object :对象 其中String   Boolean   Number   Null   Undefined 是基本数据类型      Object是引用数据类型
String字符串: 在JS中字符串需要使用引号(单引号或双引号,但是不可以混着使用)引起来 引号不可以嵌套:单引号里面不能放单引号,双引号里面不能放双引号 console.log("你好"呀"") ;双引号里面不能嵌套双引号 在字符串中,我们可以使用  \  作为转义字符 \"  表示 "" \'  表示' \n  表示换行 \t  表示制表符(tab) \\  表示\
 
Number类型 JS中所有的数值都是Number类型,包括整数和浮点数(小数) Number.MAX_VALUE表示数字的最大值,如果超过了最大值,返回Infinity(表示正无穷),typeof检查数据类型是number Number.MIN_VALUE表示大于0的最小值 NaN 是一个特殊的数字,表示Not A Number,类型检查返回number JS中整数的运算基本是精确的 var a=1+2 返回:3 但是浮点数不是很精确:var a=0.1+0.2 返回0.300000000004
Boolean类型只有2个,主要用来做逻辑判断 true-表示真    false--表示假   typeof返回:boolean
Null类型的值只有一个,就是null,用来表示一个空对象(是空值),typeof类型是object
Undefined类型的值只有一个,就是undefined,表示未定义,当定义一个变量,但是并不给变量赋值时,返回值就是undefined
================================================================================================================================
强制类型转换:是指将一个数据类型转换为另外一个数据类型 类型转换一般是将其他数据类型转换为String Number Boolean 1.  将其他类型转换为String   方法一:调用被转换数据类型的toString()方法,不会影响到原变量,它会将转换的数据返回                 var a=123===var b=a.toString()                 缺点:对于值是null和undefined,是不可以转换为字符串类型的,他们是没有toString()方法   方法二:调用String()函数,并将被转换的数据作为参数                var a=123===var b=String(a)                也可以将null和undefined转换为字符串类型 2.  将其他数据类型转换为Number类型   方法一:使用Number()函数      var a='123'===var b=Number(a)   将字符串转换为数字:      1.如果是纯数字的字符串,则直接将其转换为数字   var a='123'  >  返回123      2.如果字符串中含有非数字的内容,则转换为NaN(不是一个数字),但是typeof类型还是number      3.如果是空字符串或字符串全由空格组成,则转换为0   将布尔转换为数字     如果布尔值是true,则转换为1;如果布尔值是false,则换转换为0   将null转换为数字:直接转换为0   将undefined转换为数字,直接转换为NaN 方法二:主要是用来转换字符串 parseInt()将一个字符串转换为整型Number类型,可以将一个字符串中有效的整数取出来 parseFloat()将一个字符串转换为浮点数Number类型 对于非字符串类型的数据,使用parseInt()或parseFloat()方法,它会先将其转换为字符串String类型,然后再操作 isNaN(X)函数用户检查参数是否是非数字值(检查数字是否非法):如果X是特殊的非数字值NaN(或者被转换为这样的值),返回值为true,如果X是其他值,则为false 备注:   1.  isNaN()函数可用于判断其参数是否是NaN,该值表示一个非法的数字(比如被0除后得到的结果)   2.  NaN与任何值(包括它自身)相比结果都是false,所以要判断某个值是否是NaN,不可以是==或===,所以,isNaN()函数是必需的   3.  isNaN()函数常用于检查parseInt()和parseFloat()的结果,判断他们是否是合法的数字;也可以用来检查算法是否错误
 
3.  将其他类型转换为Boolean,主要是调用Boolean()函数

  数字转换为布尔:除了0和NaN返回false,其余都是返回true

  字符串转换为布尔:除了空串,其余都返回true
  null和undefined都会返回false
  对象也会转换为true

    var a =" "; //返回 true

    var a =""; //返回 false
    var a =null; //返回 false
    var a =undefined; //返回 false
    var a =NaN; //返回 false

 

undefined转换为Number类型的值是NaN

null转换为Number类型的值是0

 

undefined转换为String类型的值是undefined

null转换为String类型的值是null

 

========================================================================
检查变量的类型 typeof 语法:typeof 变量   返回基础类型(小写)string,number,boolean,object,undefined
===============================================================================

在JS中,如果需要表示16进制的数字,则是以0X开头

              如果需要表示8进制的数字,则是以0开头
             如果需要表示2进制的数字,则是以0b开头,但是并不是所有浏览器都支持
  var a="070",如果像是这样的字符串,有些浏览器会解析为8进制,有些会解析成2进制,此时需要为parseInt()设置第2个参数,
  用来指示数字的进制数 parseInt(a,10) //表示转换为10进制

=================================================================================

流程控制语句

1. 在JS中的程序都是从上到下一步一步开始执行的,通过流程控制语句可以控制程序的执行顺序,使程序可以根据一定的条件来选择执行
2. 分类: 条件判断语句      条件分支语句      循环语句

 

条件判断语句:if语句

语法一: if(条件表达式)  {  语句...  }
  if语句在执行时,会先对条件表达式进行求值判断,如果条件条件表达式的值为true,则执行if后面的语句;否则,if后面的语句不执行

语法二:if(条件表达式){   语句....  }else{  语句...  }

  if语句在执行时,会先对条件表达式进行求值判断,如果条件条件表达式的值为true,则执行if后面的语句;如果值是false,则执行else后面的语句

语法三:if(条件表达式){   语句....  }else if(条件表达式){  语句...  }else{  语句...  }

  当该语句执行时,会从上向下依次对条件表达式求值判断,如果值为true,则执行当前语句;如果值为false,则继续向下求值判断

 

条件分支语句:switch语句

语法 :  switch(条件表达式){

      case 表达式 :

          语句...

          break;

 

        case 表达式 :

 

            语句...

 

            break;

      default :

          语句...

          break;

 

    }

break的主要作用是退出switch语句

执行流程:执行时,会依次将case后面表达式的值switch后面的条件表达式的值进行全等比较::如果比较结果为true,则从当前case处执行代码,

break处结束代码的执行,如果比较结果为false,则继续向下比较;如果所有的比较结果都是false,就执行default里面的语句

       分数大于60分的输出合格,否则就不合格

 

 

循环语句:通过循环语句可以反复的多次执行一段代码

while(条件表达式){

  语句....

}

while语句在执行时,先对条件表达式进行求值判断,如果为true,则执行循环体;执行完循环体后,继续对表达式进行求值判断,如果为true,继续执行循环体,以此类推,直到条件表达式的值为false,结束

    当m的值为0时,结束循环

 

do...while循环

do{

  语句..

}while(条件表达式)

do...while在执行时,会首先执行do里面的循环体,执行完毕以后,再去判断while条件表达式的值,如果结果为true,继续执行do里面的循环体;

否则,结束循环

while与do...while功能类似,最大的区别是while是先判断条件表达式的值,然后执行;而do...while是先执行循环体,再判断while表达式的值

do...while可以保证循环体至少执行一次

 

 

/*    * 假如投资的年利率是5%,那么从1000到5000,需要几年的时间    * */    var money = 1000;  //初始资金    var year = 1; //年数    while (money < 5000) {        money *= 1.05;        year++    }    console.log(year)

 

 

 

for循环

for(初始表达式;条件表达式;更新表达式){     语句....  } 执行流程 1. 执行初始化表达式,初始化变量 2. 执行条件表达式,判断是否执行循环,如果为true,则执行循环体;否则,终止循环 3. 执行更新表达式,执行完毕,重复第2步骤(更新表达式是在执行循环体完毕以后,再执行的)
//打印0 1 2 3 4    for (var m = 0; m < 5; m++) {        console.log(m);    }    //打印4 3 2 1 0    for (var m = 4; m >= 0; m--) {        console.log(m);    }
//打印1-100之间的所有奇数的和(奇数:不能被2整除的数)    var sum = 0;    for (var m = 1; m <= 100; m++) {        //判断m是否是奇数        if (m % 2 != 0) {            sum += m;        }    }    console.log(sum)
//打印1-100之间的所有7的倍数的个数及和    var sum = 0;    var count = 0;    for (var m = 1; m <= 100; m++) {        //判断m是否是7的倍数        if (m % 7 == 0) {            sum += m;            count++;            //console.log(m);        }    }    console.log("1-100之间所有的7的倍数有:" + count + "个");  //返回:14    console.log("1-100之间所有的7的倍数的和是:" + sum); //返回:735
/*    * 水仙花数:是指一个3位数,他的每个位上的数字的3次幂之和等于他本身(例如1^3+5^3+3^3=153)    * */    for (var n = 100; n < 1000; n++) {        //将3位数分别拆分:百位、十位、个位        //方法一        var bai = parseInt(n / 100);        var shi = parseInt(n % 100 / 10);        var ge = parseInt(n % 100 % 10);        //方法二        var bai = parseInt(n / 100);        var shi = parseInt((n - bai * 100) / 10);        var ge = parseInt((n - bai * 100 - shi * 10) / 1);        //方法三        var bai = +String(n).substring(0, 1);        var shi = +String(n).substring(1, 2);        var ge = +String(n).substring(2, 3);        if (bai * bai * bai + shi * shi * shi + ge * ge * ge == n) {            console.log(n);   //返回 153 370 371 407        }    }
/*    * 判断一个数是否是质数:只能被1和它自身整除的数,1既不是质数也不是合数,质数必须是大于1的自然数    * */    var num = prompt('请输入一个大于1的自然数');    //中间变量:表示是否是质数    var flag = true;    for (var i = 2; i < num; i++) {        console.log(i);        if (num % i == 0) {            //如果num能被i整除,那么num一定不是质数            flag = false;            break;  //直接跳出for循环        }    }    if (flag) {        alert('是质数');    } else {        alert('不是质数')    }
/*    *    输出以下的形状    *    *  1    2*1-1    *    ***  3 2*2-1    *    *****  5  2*3-1    *    *******  7  2*4-1    * */    for (var i = 1; i < 5; i++) {        var num = 2 * i - 1;        for (var j = 1; j <= num; j++) {            document.write('*');        }        document.write('
'); }
/*    * 打印9*9乘法表    *   1*1=1    *   1*2=2 2*2    *   1*3=3 2*3=6 3*3=9    * */    for (var i = 1; i <= 9; i++) {        for (var j = 1; j <= i; j++) {            document.write(i + '*' + j + '=' + i * j+' ')        }        document.write('
') }
/*    * 打印出1-100之间所有的质数  1既不是质数也不是合数    * */    for (var m = 2; m <= 100; m++) {        var flag = true;        for (var n = 2; n < m; n++) {            //如果m能被n整除,那么m一定不是质数            if (m % n == 0) {                flag = false;                break;            }        }        if (flag) {            console.log(m);        }    }

 

===========================================================================================================

prompt() 方法用于显示可提示用户进行输入的对话框:prompt(text,defaultText)   text:可选,要在对话框中显示的纯文本     defaultText:可选,默认的输入文本 如果用户单击取消按钮,返回null;如果用户单击确认按钮,则返回输入字段当前显示的文本 var score=prompt('请输入小名的成绩',90); 在用户点击确认或取消按钮将对话框关闭之前,它将组织用户对浏览器的所有输入;在调用prompt()时,将暂停对JS代码的执行, 在用户做出响应之前,不会执行下一条语句
============================================================================================================================================
break:可以退出switch或立即跳出离它最近的整个for循环
/* * 可以为循环语句创建一个label,来标识当前循环  labelName:循环语句 * 在使用break语句时,可以在break后面跟着labelName,这样就可以结束指定的for循环,而不是最近的for循环 * */ outer: for (var i = 1; i < 4; i++) {
console.log('外层循环:' + i) for (var j = 5; j < 10; j++) {
console.log('内层循环:' + j); break outer; } }
continue:跳出本层循环(当次循环),继续执行下一次的循环 不可以在if里面使用break和continue ==============================================================================
/* *console.time('timeFlag'):设置一个名为 timeFlag 的计时器 * */ console.time('timeFlag') for(var i=0;i<100;i++){
console.log(i) } //终止一个计时器 返回timeFlag:XXXXs 用来表示从计时器开始到结束所花费的时间 console.timeEnd('timeFlag'); ================================================================================
 
 
 

转载于:https://www.cnblogs.com/songxia/p/10269062.html

你可能感兴趣的文章
科学世界的人文关怀:开源科学与人工智能
查看>>
ES2017中的修饰器Decorator
查看>>
mysql 创建函数This function has none of DETERMINISTIC, NO SQL, or READS
查看>>
java中POJO类和DTO类都要实现序列化
查看>>
asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付
查看>>
引用rtmp编译报错:rtmp.obj : error LNK2001: 无法解析的外部符号 __imp__timeGetTime@0
查看>>
Maven--要点笔记
查看>>
是什么让C#成为最值得学习的编程语言
查看>>
curl: (6) Couldn’t resolve host ‘www.ttlsa.com’【转】
查看>>
【C/C++】:用C实现输出日期的阴历日子
查看>>
jquery版本号升级不兼容的问题:$(&quot;input&quot;).attr(&quot;value&quot;)功能发生改变...
查看>>
基于ASP.NET WebAPI OWIN实现Self-Host项目实战
查看>>
linux下xargs和管道的区别
查看>>
FPGA开发流程1(详述每一环节的物理含义和实现目标)
查看>>
oc83--自定义类实现copy方法
查看>>
【Eclipse】Eclipse中修改项目的映射名称与端口
查看>>
Mongoose 利用实现HTTP服务
查看>>
Python pycharm 常用快捷键
查看>>
[LeetCode] Path Sum IV 二叉树的路径和之四
查看>>
oracle定时任务
查看>>