欢迎来到夜的世界

莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生.料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。
扩大
缩小

前端基础之Javascript

一 .  JavaScript概述

     Web前端有三层 : 

    HTML : 从语义角度,描述页面结构

    CSS : 从审美角度,描述样式(美化页面)

    JavaScript : 从交互角度,描述行为(提升用户体验)

     JavaScript的历史     

     布兰登 • 艾奇(Brendan Eich,1961年~),1995年在网景公司,发明的JavaScript。

     一开始JavaScript叫做LiveScript,但是由于当时Java这个语言特别火,所以为了傍大牌,就改名为JavaScript.

     同时期还有其他的网页语言,比如VBScript、JScript等等,但是后来都被JavaScript打败了,所以现在的浏览器中,只运行一种脚本语言就是JavaScript.

       ECMAScript       

  ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)制定的标准。

  JavaScript是由公司开发而成的,问题是不便于其他的公司拓展和使用。所以欧洲的这个ECMA的组织,牵头制定JavaScript的标准,取名为ECMAScript。

  尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

  • 核心(ECMAScript) 
  • 文档对象模型(DOM) Document object model (整合js,css,html)
  • 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
  • Javascript 在开发中绝大多数情况是基于对象的.也是面向对象的.  

  简单地说,ECMAScript 描述了以下内容:

  • 语法 
  • 类型 
  • 语句 
  • 关键字 
  • 保留字 
  • 运算符 
  • 对象 (封装 继承 多态) 基于对象的语言.使用对象.

      JavaScript的介绍      

    ● JavaScript 是弱类型的语言 , 变量值需要用 var 来声明

var a;

    ●JavaScript 是有界面效果的

    ●JavaScript 是前台语言,运行在用户的终端页面上,而不是服务器上.就是一个简单的制作页面效果的语言,服务于页面的交互效果,美化,绚丽,不能操作数据库.

  JavaScript 的特点 : 

    ● 简单易用 : 可以使用任何文本编辑工具编写,只需要浏览器就可以执行.

    ● 解释执行(解释语言) : 事先不编译,逐行执行 , 无需进行严格的变量声明.

    ● 基于对象 : 内置大量现成对象,编写少量程序可以完成目标.

 

二 . 语法与书写规范

      在页面中,我们可以在body标签中放入<script type=”text/javascript”></script>标签对儿,<script type=”text/javascript”></script>标签对儿

<script type="text/javascript">

</script>

  alert语句       

    alert(英文翻译为"警报")的用途 : 弹出"警告框"             

  语法规则      

  (1) . JavaScript 对缩进 , 换行 , 空格不感兴趣.

    备注 : 每一条语句末尾要加上分号 , 虽然分号不是必须加的,但是为了程序今后要压缩,如果不加,压缩之后将无法运行.

  (2) . 所以的符号,都是英语的. 比如 括号 . 引号 , 分号

  (3) . JavaScript 的注释 : 

    单行注释 : 

// 这是注释

    多行注释 : 

/*
    多行注释1
    多行注释2
*/

       备注:sublime中,单行注释的快捷键是ctrl+/,多行注释的快捷键是ctrl+shift+/

  控制台输出 : console.log("")   

  console.log("")表示在控制台中输出。console表示“控制台”,log表示“输出”。

  控制台在Chrome浏览器的F12中。控制台是工程师、程序员调试程序的地方。程序员经常使用这条语句输出一些东西,来测试程序是否正确。

  用户输入 : prompt() 语句      

   prompt() 就是专门弹出能够让用户输入的对话框.

            

   上方代码中 ,用户输入的内容,奖杯传入的变量a 里面 .w我们可以打开 f12 打开控制台查看结果.

   prompt() 语句中,用户不管输入什么内容,都是字符串.

   alert 和 prompt 的区别 : 

alert("从前有座山");                //直接使用,不需要变量
var a = prompt("请输入一个数字");   // 必须用一个变量,来接收用户输入的值

  直接量 : 数字和字符串        

        "直接量" 即 "常量" ,也称为"字面量" . 看见什么,他就是什么.

  简单的直接量有两种 : 数字  字符串

  (1) . 数值的直接量的表达非常简单,写上去就行了,不需要任何的符号.

alert(666);  // 666是数字,所以不需要加引导

         (2) . 字符串也很简单 , 但一定要加上引号,可以是单词,句子等.

  变量         

var a = 100;

    var是英语"variant"变量的缩写. 后面要加一个空格 , 空格后面的东西就是"变量名".

    ● 定义变量 : var 就是一个关键字 , 用来定义变量,所谓关键字 , 就是有特殊功能的小词语. 关键字后面一点要有空格隔开.

    ● 变量的赋值 : 等号表示赋值 , 将等号右边的值 , 赋值给左边的变量.

    ● 变量名 : 我们可以给变量任意的取名字.

   a 和 b 都可以, 只是b 方法将 定义和赋值放到一起.

       变量的命名规范 : 只能由英语字母、数字、下划线、美元符号$构成,且不能以数字开头,并且不能是JavaScript保留字。(同一个字母大写和小写是两个变量)

  变量的类型      

   变量里面能够存储数字 ,字符串等, 变量将会自动的根据存储内容的类型不同,来决定自己的类型.

         数值型      

         如果一个变量中,存放了数字,那么这个变量就是数值型的.

    var a = 100;            //定义了一个变量a,并且赋值100
    console.log(typeof a);  //输出a变量的类型

     typeof() 表示 获取变量的类型, 语法 : typrof 变量   

 在JavaScript中,只要是数,就是数值型(number)的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是number类型的。 

        字符串类型 : string       

var a = "abcde";
    var b = "海贼王路飞";
    var c = "123123";
    var d = "哈哈哈哈哈";
    var e = "";     //空字符串

    console.log(typeof a);
    console.log(typeof b);
    console.log(typeof c);
    console.log(typeof d);
    console.log(typeof e);

    连字符和加号的区别 : 

键盘上的+可能是连字符,也可能是数字的加号。如下:

   console.log("我" + "爱" + "你");   //连字符,把三个独立的汉字,连接在一起了
    console.log("我+爱+你");           //原样输出
    console.log(1+2+3);             //输出6

总结如果加号两边都是数值,此时是加。否则,就是连字符(用来连接字符串)。

          变量值的传递(赋值)      

    语句 : 

a = b

   把 b 的值赋值给 a , b 不变 .

  将等号右边的值,赋值给左边的变量: 等号右边的变量,值不变.

  注意 : 

<script type="text/javascript">
    var a = "3";
    var b = 2;
    console.log(a-b)

</script>

// 结果等于  1

  效果:(注意,字符串 - 数值 = 数值)

        变量格式的转换          

parseInt()可以将字符串转数字。parse表示“转换”,Int表示“整数”(注意Int的拼写)。例如:

字符串转数字的方法:

parseInt("5"); 

parseInt()还具有以下特性

(1)带有自动净化的功能;只保留字符串最开头的数字,后面的中文自动消失。例如:

console.log(parseInt("2018你真帅!!");

(2)自动带有截断小数的功能:取整,不四舍五入

var a = parseInt(5.8) + parseInt(4.7);
console.log(a);

//////////////////////////////////////////////////////////
 var a = parseInt(5.8 + 4.7);
 console.log(a);

 

    

三 . 数据类型

       

 /*       
        number     -----  数值
        boolean    -----  布尔值
        string     -----  字符串
        undefined  -----  undefined
        null       -----   null  
      
 *

  3.1   基础数据类型               

    3.1.1 数字类型(number)      

var a = 123;
//typeof 检查当前变量是什么数据类型
console.log(typeof a)
//特殊情况
var a1 = 5/0;
console.log(typeof e1) //Infinity 无限大. number类型

    3.1.2    字符串类型(string)     

var str  = '123'
console.log(typeof str)

    3.1.3   布尔值类型(boolean)     

Boolean类型仅有两个值:true和false,也代表1和0,实际运算中true=1,false=0
布尔值也可以看作on/off、yes/no、1/0对应true/false
Boolean值主要用于JavaScript的控制语句,例如:

if (x==1){
      y=y+1;
}else{
      y=y-1;
      }

    3.1.4   null 与 undefined    

Undefined类型

Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。

当函数无明确返回值时,返回的也是值 "undefined";

var d1;
//表示变量未定义
console.log(typeof d1)

Null类型

另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

var c1 = null;//空对象. object
console.log(c1)

  3.2   运算符     

    (1) .  赋值运算符           

          以 var x = 12 , y = 5; 来演示 : 

    (2) . 算数运算符        

         以 var a = 5 , b = 2; 为例 :

 

   注意 : var x = a++;  先将a的值赋值给x , x输出5 ; 在对a++,a就是6.(--同理)

    (3) . 比较运算符     

       以 var a = 5;    

    (4) . 特殊情况        

// 不能对字符串进行+运算 只能拼接
var a1 = '1';
var a2 = '2';
console.log(a1-a2) //12
var b1 = 'one';
var b2  = 'two';

// NaN. ==== not a number 是number类型
console.log(typeof(b1*b2))

 

  3.3  数据类型转换     

    将数值类型-->字符串类型       

  1.隐式转换 :      

var n1 = 123;
var n2 = '123';
var n3 = n1+n2;
// 隐式转换
console.log(typeof n3);

  2.强制类型转换:

// 强制类型转换String(),toString()
var str1 = String(n1);
console.log(typeof str1);

var num = 234;
console.log(num.toString())

    将字符串类型-->数值类型       

var  stringNum = '789.123wadjhkd';
var num2 =  Number(stringNum);
console.log(num2)

// parseInt()可以解析一个字符串 并且返回一个整数
console.log(parseInt(stringNum))
console.log(parseFloat(stringNum));

    将任何数据类型-->boolean类型              

var b1 = '123';
var b2 = 0;
var b3 = -123

var b4 = Infinity; 
var b5 = NaN;

var b6; //undefined
var b7 = null;

// 非0既真
console.log(Boolean(b7))

 

  3.4   流程控制       

    (1) . if , if-else , if-else if-else      

var ji  = 20;
if(ji >= 20){
    console.log('恭喜你,吃鸡成功,大吉大利')
}
alert('alex');//下面的代码还会执行
var ji  = 20;
if(ji>=20){
    console.log('恭喜你,吃鸡成功,大吉大利')
}else{
    console.log('很遗憾 下次继续努力')

}
if (true) {
   //执行操作
}else if(true){
    //满足条件执行            
}else if(true){
   //满足条件执行        
}else{
  //满足条件执行
}

      注意 : 浏览器解析代码的顺序是 : 从上往下执行 , 从左往右

    (2) . 逻辑与&& , 逻辑或||     

//1.模拟  如果总分 >400 并且数学成绩 >89分 被清华大学录入
//逻辑与&& 两个条件都成立的时候 才成立
if(sum>400 && math>90){
    console.log('清华大学录入成功')
}else{
    alert('高考失利')
}
//2.模拟 如果总分>400 或者你英语大于85 被复旦大学录入
//逻辑或  只有有一个条件成立的时候 才成立
if(sum>500 || english>85){
    alert('被复旦大学录入')
}else{
    alert('高考又失利了')
}

    (3) . switch     

switch基本格式
switch (表达式) {
    case 值1:语句1;break;
    case 值2:语句2;break;
    case 值3:语句3;break;
    default:语句4;
}

                      

        示例 : 

var gameScore = 'better';

switch(gameScore){

//case表示一个条件 满足这个条件就会走进来 遇到break跳出。break终止循环。如果某个条件中不写 break,那么直到该程序遇到下一个break停止
    case 'good':
    console.log('玩的很好')
    //break表示退出
    break;
    case  'better':
    console.log('玩的老牛逼了')
    break;
    case 'best':
    console.log('恭喜你 吃鸡成功')
    break;

    default:
    console.log('很遗憾')

}

    (4) . while 循环            

        循环三步走 : 

    1 . 初始化循环变量

    2 . 判断循环条件

    3 . 更新循环变量

var i = 1; //初始化循环变量

while(i<=9){ //判断循环条件
    console.log(i);
    i = i+1; //更新循环条件
}

    (5) . do_while      

//不管有没有满足while中的条件do里面的代码都会走一次
var i = 3;//初始化循环变量
do{

    console.log(i)
    i++;//更新循环条件

}while (i<10) //判断循环条件

    (6) . for 循环      

for(var i = 1;i<=10;i++){
     console.log(i)
 }
var sum = 0;
for(var j = 1;j<=100;j++){
    sum = sum+j
}
console.log(sum)
小练习-求1-100的数和

    双重for 循环     

for(var i=1;i<=3;i++){
            
   for(var j=0;j<6;j++){
        document.write('*')
    }
            
   document.write('<br>')
 }
for(var i=1;i<=6;i++){
   for(var j=1;j<=i;j++){
        document.write("*");
   }
                
     document.write('<br>');
}
打印直角三角形
          for(var i=1;i<=6;i++){ //行数
                
                //控制我们的空格数
                for(var s=i;s<6;s++){
                    document.write('&nbsp;')
                }
            

                for(var j=1;j<=2*i-1;j++){
                    document.write('*')
                }
                document.write('<br>')
                
            }
打印等边三角形

  3.5  异常处理       

try {
    //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
    // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
    //e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
     //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}

 

四 . JavaScript 的对象

     介绍 : 

   在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String、Math、Array、Date、RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是基于对象实现的。

<script language="javascript">
var aa=Number.MAX_VALUE; 
//利用数字对象获取可表示最大数
var bb=new String("hello JavaScript"); 
//创建字符串对象
var cc=new Date();
//创建日期对象
var dd=new Array("星期一","星期二","星期三","星期四"); 
//数组对象
</script>

 

                      

  4.1  数组 Array      

    1 .数组创建的三种方式 : 

创建方法一:
var arrname = [元素0,元素1,....,];       // var arr = [1,2,3];

创建方法二 : 
var arrname = new Array(元素0,元素1,....,);    //var arrname = new Array(100,"a",true);

创建方法三 : 
var arrname = new Array(长度)
                    // 初始化数组长度
                           var cnweek = new Array(7);
                                 cnweek[0] = "星期日";
                                 cnweek[1] = "星期一";
                                 ................
                                 cnweek[6] = "星期六";

     2 . 数组的赋值

var arr = [];
//通过下标进行一一赋值
arr[0] = 132;
arr[1] = "嘿嘿嘿";
arr[2] = "哈哈哈";

     3 . 数组的常用方法

      数组的常用方法示例 :  -->  点击    ◆◆◆

 

  4.2  字符串String     

     1 . 字符串对象的创建 

     (1) . 变量 = "字符串"

   (2) . 字符串对象名称 = new String(字符串)

//1:
var str1 = "hello world";

//2:
var str1 = new String("hello world")

      2 . 字符串的方法 :

    

      字符串的常用方法示例 : --> 点击    ★★★

 

 

  4.3  Date  日期对象    

    1 . 创建日期对象只有构造函数一种方式,使用 new 关键字

//创建了一个date对象
var myDate = new Date();

      2 .  常用方法 : 

//创建日期对象
var myDate=new Date();
        
//获取一个月中的某一天
console.log(myDate.getDate());

//返回本地时间
console.log(myDate().toLocalString());//2018/5/27 下午10:36:23

       示例 : 

function getCurrentDate(){
        //1. 创建Date对象
        var date = new Date(); //没有填入任何参数那么就是当前时间
        //2. 获得当前年份
        var year = date.getFullYear();
        //3. 获得当前月份 js中月份是从0到11.
        var month = date.getMonth()+1;
        //4. 获得当前日
        var day = date.getDate();
        //5. 获得当前小时
        var hour = date.getHours();
        //6. 获得当前分钟
        var min = date.getMinutes();
        //7. 获得当前秒
        var sec = date.getSeconds();
        //8. 获得当前星期
        var week = date.getDay(); //没有getWeek
        // 2014年06月18日 15:40:30 星期三
        return year+"年"+month+"月"+day+"日 "+hour+":"+min+":"+sec+" "+week;
    }

alert(getCurrentDate());

//解决 自动补齐成两位数字的方法
    function changeNum(num){
    if(num < 10){
        return "0"+num;
    }else{
        return num;
    }

}
//将数字 0~6 转换成 星期日到星期六
    function parseWeek(week){
    var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    //             0      1      2      3 .............
    return arr[week];
}
示例

 

     3 . Date对象的方法--设置日期和时间

//设置日期和时间
//setDate(day_of_month)       设置日
//setMonth (month)                 设置月
//setFullYear (year)               设置年
//setHours (hour)         设置小时
//setMinutes (minute)     设置分钟
//setSeconds (second)     设置秒
//setMillliseconds (ms)       设置毫秒(0-999)
//setTime (allms)     设置累计毫秒(从1970/1/1午夜)
    
var x=new Date();
x.setFullYear (1997);    //设置年1997
x.setMonth(7);        //设置月7
x.setDate(1);        //设置日1
x.setHours(5);        //设置小时5
x.setMinutes(12);    //设置分钟12
x.setSeconds(54);    //设置秒54
x.setMilliseconds(230);        //设置毫秒230
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日5点12分54秒

x.setTime(870409430000); //设置累计毫秒数
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日12点23分50秒
View Code

  4 . Date对象的方法--设置日期和时间

日期和时间的转换:

getTimezoneOffset():8个时区×15度×4分/度=480;
返回本地时间与GMT的时间差,以分钟为单位
toUTCString()
返回国际标准时间字符串
toLocalString()
返回本地格式时间字符串
Date.parse(x)
返回累计毫秒数(从1970/1/1午夜到本地时间)
Date.UTC(x)
返回累计毫秒数(从1970/1/1午夜到国际时间)
View Code

 

  4.4   Math 内置对象      

       1. 常用的内置对象 : 

       用户的内置对象示例 : -->  点击   ●●●

 

 

  4.5   Function  对象           

      详情在这里  --->>>  点击   ☆☆☆☆☆☆

 

posted on 2018-09-25 15:19  二十四桥_明月夜  阅读(293)  评论(0编辑  收藏  举报

导航