JavaScript01

今天主要内容:

  • JavaScript介绍
  • ECMAScript基本调试
  • 变量与数据类型
  • 运算符
  • 分支语句与循环语句
  • 数组与函数

1、JavaScript介绍

1>什么是JavaScript
JS是一种运行于JS解释器/引擎中的解释型脚本语言
编译型语言:程序在运行前会进行编译
解释型语言:运行之前不会编译,直接执行,出错则停止

2>JavaScript发展史
1、1992年 Nombas 为自己的软件开发了一款脚本语言C Minus Minus(C--)后更名为 ScriptEase,可以嵌入在网页中。
2、1995年 Netscape为自己的Navigator2.0 开发了另一种客户端脚本语言-LiveScript,为了借助Java势头,所以更名为 Javascript
3、1996年Microsoft为了进军浏览器市场,在IE3.0 中 发布了Javascript的克隆版,称为JScript
4、1997年,Javascript1.1作为草案提交给了ECMA(欧洲计算机制造商联合会),Javascript的核心 被更名成 ECMAScript

3>JavaScript完整组成部分

  • ECMASCript:
    JavaScript主要定义JS语言中变量,运算符,数据类型,循环,数组,面向对象,API等一些编程语言规范
  • DOM
    Document Object Model
    文档对象模型
    让JS可以操作页面上的HTML元素,操作页面内容
  • BOM
    Browser Object Model
    浏览器对象模型
    让JS可以操作访问浏览器

4>JavaScript语言的特点和用途
特点:

  • 解释性语言,不需要编译,可以使用任何文本工具编译
  • 弱类型脚本语言,由数据来决定数据类型
  • 面向对象的语言
    用途:
  • 客户端数据计算
  • 表单输入验证
  • 浏览器事件的触发和处理
  • 网页动态效果制作
  • 服务器端的异步数据提交(AJAX)

2、ECMAScript基本调试

1>JavaScript基本用法

  • 定义在head中
    不建议使用,因为会先加载js代码,再加载页面,导致页面卡顿
    <head>
    <script></script>
    </head>
  • 定义在body标签结束之前,其他html标签之后,先加载页面,再加载js
    <body>
    <script></script>
    </body>
  • 定义在外部一个单独的js文件中,在body结束标签之前进行引入,里面不能再写其他JS代码
    <script src="js地址"></script>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>js基本用法</title>
        <script>
            //输出一句话
            console.log("hello~Js");
        </script>
    </head>
    <body>
        <!--避免页面卡顿,建议script放在
            body结束标签之前
        -->
        <script>
            console.log("哈哈哈");         
        </script>
            
        <!--引入外部JS文件,不能再在里面写JS代码-->
        <script src="js/my.js"></script>
        
        <script>
            console.log("嘿嘿");
        </script>
    </body>
</html>

2>JavaScript基本调试信息
注释:
// 单行注释
/**/ 多行文本注释
调试信息:
console.log() 控制台输出
document.write() 页面输出
弹窗
alert() 警告框
confirm() 确认框
prompt() 输入框

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //单行注释
            /*多行文本注释*/
            
            /*JS代码调试方式*/
            //控制台输出
            console.log("控制台输入页面","aaa","bbb","ccc");
            //浏览器页面输出
            document.write("<h1 style='color: red;'>页面<br/>输出</h1>");
        
            //弹窗
            alert("弹窗");
            //确认框
            confirm("确认关闭吗?");
            //输入框
            prompt("请输入你的姓名");
        </script>
    </body>
</html>

3、变量与数据类型

1、变量

JS是一门弱类型编程语言,所有的变量,都使用var来定义,变量的具体类型是由值来确定的,变量命名规范与Java一样

2、数据类型(4种基本类型+引用类型)

基本类型:

  • number
    数值类型,可以代表整数类型,也可以代表浮点类型,包括NAN
  • string
    字符串类型,可以表示字符,也可以表示字符串,使用单引号或双引号括起来
  • boolean
    布尔类型,表示真假,值:true/false
    -undefined
    未定义类型,定义了一个变量但是没有赋值,值和类型都是undefined

引用类型:object
JS内核中定义的Array,Date,String等

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //js变量的定义
            var a = 10;
            var b = 12.3;
            var c = "abc";
            var d = true;
            console.log(a,b,c,d);
            
            //查看变量的类型
            var f = 10;
            console.log(f,typeof f);//number
            f = 12.3;
            console.log(f,typeof f);//number
            f = false;
            console.log(f,typeof f);//boolean
            f = "abc";
            console.log(f,typeof f);//string
            f = 'abcdef';
            console.log(f,typeof f);//string
            f = new Object();
            console.log(f,typeof f);//object
            f = null;
            console.log(f,typeof f);//object
            
            //变量定义但是没有赋值
            //那么值和类型都是undefined
            var m;
            console.log(m,typeof m);//undefined
        </script>
    </body>
</html>

3、运算符

1>算术运算符:+ - * / % ++ --
- * / %:如果有纯数字类型串参与运算
会先将字符串解析为整数
++ --:如果有字符串,尽可能先将字符串解析成整数

2>比较运算符: > < >= <= == != === !==
> < >= <=:如果字符串和数字比较,会先将字符串解 析为整数,如果是字符串之间互相比较,按照字母表顺序比较
== != 只比较内容
=== !== 同时比较内容和类型

3>逻辑运算符: && || !
4>赋值运算符: = += -= *= /= %=
5>三项运算符: ?:
6>位运算符: ^ & | ~
7>移位运算符: >> >>> <<

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            /*js运算符*/
            //算术运算符
            var a = 15;
            var b = "2";
            var result = a+b;
            console.log(result);
            result = a-b;
            console.log(result);
            result = a*b;
            console.log(result);
            result = a/b;
            //向下求整得整数
            result = Math.floor(result);
            console.log(result);
            result = a%b;
            console.log(result);
            
            result = b+++(++b);
            console.log(result);
            
            var i = 1;
                i = i++;
                i = i++;
                i = i++;
                i = i++;
            console.log(i);
            
            var m = 1;
            var n = m++;
                n = m++;
                n = m++;
                n = m++;
            console.log(m,n);
            
            //比较运算符
            var c = "20";
            var d = 20;
            console.log(c>d,c>=d);
            console.log(c<d,c<=d);
            //==只比较内容
            console.log(c==d);//true
            console.log(c!=d);//false
            //===同时比较内容和类型
            console.log(c===d);//false
            //内容和类型只要有一个不一致,就为true
            console.log(c!==d);//true
            
            //逻辑运算符
            var a = 20;
            var b = 30;
            var f = a++>20 && --b<30;
            console.log(f,a,b);
            
    //三项运算符
    // 只使用一次表达式,求出a,b,c三个数中最大值
            a = 20;
            b = 30;
            c = 50;
            max = a>b?(a>c?a:c):(b>c?b:c);
            console.log(max);
    </script>
    </body>
</html>

4、分支语句

1>if(){}else{}

2>if(){
}else if(){
}...
else{}

3>switch(){
case 值:语句;break;
case 值:语句;break;
...
default:语句;
}

1>JS会将非0数字解析为true,将0解析为false
2>JS会将非空字符串解析为true,将空字符串解析为false
3>JS会将null和undefined解析,为false

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            /*JS分支语句*/
            var f = true;
                f = 10;//true
                f = 0;//false
                f = 12.3;//true
                f = -12;//true
                f = "abc";//true
                f = "";//false
                f = " ";//true
                f = "0";//true
                f = null;//false
                
            var a;//undefined-->false
            if(a){
                console.log("今天周五");                
            }else{
                console.log("今天周一");
            }
            
            console.log(100?"aaa":"bbb");
            console.log("呵呵"?111:222);
            console.log("哈哈"&&"呵呵");
        </script>
    </body>
</html>

5、循环语句

1、for(初始化表达式;条件判断;递增递减){}
2、while(){}
3、do{}while();

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //for循环向浏览器页面输出10句话
            for(var i=0;i<10;i++){
                document.write("<h1 style='color:red'>循环测试"+i+"</h1>");
            }
            
            //while循环不断的弹窗
//          while(true){
//              alert("关不掉啊");
//          }
            
            //do~while循环,输出5个大于0.999小于1的浮点数
            for(var i=0;i<5;i++){
                var num;
                do{
                    num = Math.random();
                }while(num<0.999);
                document.write(num+"<br/>");
            }
        </script>
    </body>
</html>

6、数组

1>数组概念
Java:存储一组连续的且数据类型相同的元素
JS:可以存储一组不连续,或者数据类型不相同的元素

2>数组定义
var arr = new Array(1,2,3...);
var arr = [1,2,3];

3>数组元素访问,赋值,修改
与java一样,通过下标操作,下标从0开始
可以不连续,数组中可以放入任意数据类型元素,会自动扩容

4>数组常用API
sort():排序
concat():拼接数组
slice():截取数组
length:数组长度

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            /*JS数组的应用*/
            //1、数组的定义
            var arr = new Array();
                arr = [1,2,3];
            console.log(arr,typeof arr);
            
            //2、获取数组中元素,通过下标,下标从0开始
            console.log(arr[0]);
            console.log(arr[1]);
            console.log(arr[2]);
            console.log(arr[4]);//undefined
            
            //3、往数组中添加元素,通过下标
            arr[3] = true;
            arr[4] = "abc";
            arr[5] = [false,"abc",100];
            arr[8] = 12.3;
            arr[11] = 'mn';
            console.log(arr[6],arr[7]);//undefined
            console.log(arr);
            
            //4、获取数组长度,最大下标加1
            console.log(arr.length);
            
            //5、数组API
            var arr1 = [1,true];
            var arr2 = ["abc",12.3];
            //拼接数组
            var arr3 = arr1.concat(arr2);
            console.log(arr3);
            //数组元素倒序
            arr3 = arr3.reverse();
            console.log(arr3);
            
            //数组排序,匿名函数自己指定排序规则
            var arr4 = [6,8,4,2];
            arr4.sort(function(n1,n2){
                return n2-n1;
            });
            console.log(arr4);
            
            var a = [1,2,3,4,5,6,7,8]
            console.log(a.splice(4));//截取部分
            console.log(a);//剩余部分
            
            //从起始位置截取到结束位置
            var arr = [1,2,3,4,5,6];
            console.log(arr.slice(2,5));
        </script>
    </body>
</html>

7、函数

7、函数
1>函数概念
封装了一个特定功能的代码块并进行命名,
给其他地方进行调用

2>函数的语法
java:
修饰符 返回值类型 方法名(参数列表...){}
JS:
function 函数名(参数列表){}
1)函数没有修饰符和返回值类型
需要返回直接加return
2)参数列表不能带类型var

3>函数调用
1)JS中没有函数重载概念,如果两个函数名称相同,那么
后写的会将先写的覆盖
2)JS中内置对象arguments用于存储函数调用过程中的实参,本质上是一个数组

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script>
            //封装一个函数,用于从控制台打印输出
            //没有修饰符,没有返回值类型
            //形参不能带类型
            function print(content){
                console.log(content);
            }
            //调用函数,只检测函数名称
            print("呵呵");
            print(100);
            print(true);
            print();//undefined
            print("aaa","bbb");//aaa
            //console.log(print("sss")); 调用错误,函数没有返回值
            
            //定义一个函数,计算两个数的和
            function add(a,b){
                return a+b;             
            }
            //函数覆盖
            function add(a,b){
                return a-b;
            }
            function add(a,b,c){
                console.log(a,b,c);
                return a*b;
            }
            /*
             * arguments用于接收函数
             * 调用过程中的实参,以数组形式存储
             * arguments = [5,6,7]
             */
            function add(){
                console.log(arguments);
                //将所有实参进行累加
                var sum = 0;
                for(var i=0;i<arguments.length;i++){
                    sum += arguments[i];
                }
                return sum;
            }
            var result = add(5,6);
            console.log(result);
        </script>
    </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,072评论 0 3
  • JS 简史 Web 的兴起已经把 JavaScript 带到一个前所未有的地步, 了解JS 的历史更好的使用JS ...
    迷缘火叶阅读 1,606评论 0 1
  • 网页是什么 网页 = Html+CSS+JavaScript Html: 网页元素内容 CSS: 控制网页样式 J...
    e81bcd463937阅读 886评论 0 6
  • javascript功能插件大集合,写前端的亲们记得收藏 包管理器管理着 javascript 库,并提供读取和打...
    狗狗嗖阅读 779评论 0 1
  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,292评论 2 35