01-JS基础

一.JavaScript语言介绍

(1) JavaScript是一种专为与网页交互而设计的脚本语言, 具有较强的逻辑性.
(2)诞生: JavaScript 诞生于 1995 年.
(3)版本:
        JavaScript这种语言的基本语法结构是由ECMAScript来标准化的, 所以我们说的JavaScript版本一般指的是ECMAScript版本.
1997年7月,ECMAScript 1.0发布。
1998年6月,ECMAScript 2.0版发布。
1999年12月,ECMAScript 3.0版发布。(数组的一些方法)
2007年10月,ECMAScript 4.0版草案想要提交ECMA组织, 但由于4.0版的目标过于激进, 改动太大, 并且微软,谷歌等大公司极力反对;一直到2008年7月ECMA开会决定,中止ECMAScript 4.0的开发(即废除了这个版本)
2009年12月,ECMAScript 5.0版正式发布
2011年6月,ECMAscript 5.1版发布
2015年6月,ECMAScript 6 正式发布,并且更名为“ECMAScript 2015”。

(4)特点:
a. 脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
b. 基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
c. 简单。JavaScript语言中采用的是弱类型的变量类型, 对使用的数据类型未做出严格的要求.
d. 动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作,JavaScript都可直接对这些事件给出相应的响应。
e. 跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提是机器上的浏览器支持JavaScript脚本语言,目前JavaScript已被大多数的浏览器所支持。

(5)组成:
JavaScript由三部分组成:
1. 核心(ECMAScript)
2. 浏览器对象模型(BOM)
3. 文档对象模型(DOM)

a.ECMAScript:是一种由ECMA国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。ECMAScript 定义的只是这门语言的基础,他的组成部分有:语法、类型、语句、关键字、保留字、操作符、对象等.

b.BOM: Browse Object Model, 浏览器对象模型,提供与浏览器交互的方法和接口(API), 开发人员使用BOM可以控制浏览器显示页面以外的部分.

c.DOM: Document Object Model,文档对象模型,提供访问和操作网页HTML内容的方法和接口

二.初体验

(1).在控制台输出内容, 控制台的目标(前端调试,用完删除)

   console.log("hi..你好!");

(2). 页面上输出

   document.write("<div style='color:Red'>你好</div>");

(3).提示框

   alert("你好呀!");
页面的简单渲染过程

        打开页面, 页面的标签和css进行解析,在解析 html标签的过程中,如果遇到了js,将暂停html的渲染,执行js ,由于js的阻塞 ,js没有执行完,后面的html,css 都不执行.
        核心原因:js是单线程

正是因为 js的阻塞,就推出了async 和defer这2个属性 (都解决阻塞)

三.JS变量

(1).<script>便签的属性
        src:引入文件,如果script上面有 src,将不会执行 script里的代码,而是执行外部引用的代码
        type:默认是 text/javascript,可以不写
        async 等页面加载完成后,js立即执行
        defer 等页面加载完成后,js有顺序执行
(2).注释
        单行注释 // 快捷键 ctr + /
        多行注释 /**xxx **/ ctr + shift + /
(3).变量 variable 可变的量
        变量声明的细节 (重点)
        a. 声明变量,必须使用 var关键字
        b. 声明变量,未赋值的默认初始值 undefined
        c. 建议声明变量,并赋予初始值
        d. 声明变量后的值,可以随时随意被修改(因为js属于弱类型语言)

       var myname = "刘德华";   // 声明变量,必须使用 var关键字
       console.log(myname);//在控制台显示
       var age; //没有赋值,它的默认值是 undefined  (重点)
       console.log(age);
       age = 20;// 把20赋值给age , 把右边的值,赋值给左边
       age = '贰拾'; //把数值改成了字符串(一组双引号或单引号组成)
       console.log(age);
       //推荐写法,声明变量并赋予初始值 (重点)
       var sex = "男";

        变量命名规则 (重点)
        a.只能是数字,字母,下划线_,$
        b.不能以数字开头
        c.不能是保留字,关键字


image.png

        d.严格区分大小写
        .遵循驼峰命名法
        1).小驼峰
          变量,实例对象
        2).大驼峰
          类,构造函数
        f.语义化(见名思意)

    //var 关键字
    // SyntaxError 语法错误
    // var myname="abc";
    var var1 = "abc123";
    console.log(var1);

    // 什么是程序?
    // 一组有序的指令(代码),就是程序

    // var myname = "刘德华";
    // var myName = "小驼峰";
    // var MyName = "大驼峰"      

四.js的数据类型

js在ECMA5之前,只有6大数据类型
a. 数值类型 (Number)
b. 字符串类型 (String) 一组双引号或单引号组成
c. 布尔类型 (Boolean) 它的值只有2个 true/false (真/假)
d. null 空地址
e. undefined 未定义类型
d. object 类型

把六大数据类型分成2类
a. 值类型 (Number,String,Boolean,undefined,null)
b. 引用类型 (Object Array ,Function,Date,...)

       //如果检测基本数据类型,使用 typeof    (重点)
       //1. Number 数字类型
       var money = 100;
       console.log(money);
       //写法1
       var res1 = typeof money;
       console.log(res1);
       //写法2
       var res2 = typeof (money);
       console.log(res2);

       //2. 字符串类型   由一组双引号或单引号组成的,就是字符串
       var str = "我是周杰伦,我今年18岁";
       console.log(typeof str)  //string

       //3. Boolean 布尔类型 (真/假) (true/false)
       var flag = true;//真
       console.log(flag);
       console.log(typeof (flag)); // boolean

       //4. undefined 未定义,申明变量未赋予初始值,默认是undefined
       //5.null, 空地址
       console.log(null == null); //true

       //6.object  对象类型
       //
       var obj = { name: "刘德华" } //创建了一个崭新空盒子
       console.log(obj);

       var obj = new Object()
       obj.age = 100;
       console.log(obj);

       console.log(typeof(obj)); //object

       var num = 100;
       console.log(typeof typeof (num));  // "Number"
       console.log(typeof "Number"); //String

五.js的类型转化

        //js有2个特性的类型 , null和undefined

        // 1. undefined
        //  在声明变量的是,未赋予初始值,就是undefined

        // 2.Null
        // 它也是一个特殊的类,指向是空地址

        //注意:null和undefined是什么关系?
        // 派生关系  null派生了undefined

        //3.Boolean类型 它的值只有2种, true和fasle

        //4. Number类型 数值类型,它有一个特殊的值 NaN
        //NaN  not a number  是否不是一个数值
        var n = "你好";
        console.log(n * 100);  //NaN ,按理报错,为了程序能正常的执行,就推出了一个特殊的值 NaN
        console.log(0 / 0);

        //检测是否为一个NaN
        //isNaN() 是数值为false,不是数值则为true
        console.log(isNaN("你好")); //true
        console.log(isNaN(100)); //false
        console.log(isNaN(NaN)); //true
        console.log(typeof (NaN));//number
        console.log(NaN == NaN); //fasle

        //用isNaN 来判断是否为一个数值,只要是fasle,就认为是数值

        //Infinity 无穷大
        var b = 12 / 0;  //Infinity
        console.log(b);

        //number的最大值  (了解)
        console.log(Number.MAX_VALUE); //  1后面308个0
        //number的最小值  (了解)
        console.log(Number.MIN_VALUE);

        // Boolean类型 (重点)

        //1. 字符串转bool的规则
        // 非空字符串为true,空字符串为false
        var str = "儿童日预计";
        var res = Boolean(str);
        console.log(res);//true

        var str = "   ";//空格也为内容
        var res = Boolean(str);
        console.log(res);//true

        var str = "";
        var res = Boolean(str);
        console.log(res);//false

        //2. 数值转bool类型
        // 非0为true,0为false,NaN为false
        var n = 100;
        console.log(Boolean(n)); //true

        var n = 0;
        console.log(Boolean(n)); //false

        var n = -50;
        console.log(Boolean(n));//true

        var n = NaN;
        console.log(Boolean(n));//false

        // 非空字符串为true,空字符串为false
        var str = '0'
        console.log(Boolean(str));//true
        var str = '0' - 0; //  "0"-->0   //  0-0
        console.log(Boolean(str));//false

        // null和undefined 转换成bool,始终是false

        console.log(Boolean(null));  //false   shift+Alt+ 下
        console.log(Boolean(undefined));  //false   shift+Alt+ 下

        //对象转boolean ,只要是对象,就是true,null为false

        var obj = {}
        console.log(typeof (obj)); //object
        console.log(Boolean(obj));//true

        var obj = null
        console.log(typeof (obj)); //object
        console.log(Boolean(obj));//false


       //转数值
        // Int 整型
        // Float 浮点类型  0.1
        // string-->数值
        var str = "你好";
        console.log(Number(str)); //  NaN
        console.log(parseInt(str));// NaN
        console.log(parseFloat(str));// NaN

        //Number转空字符串 为0
        var str = "";
        console.log(Number(str));// 0
        console.log(parseInt(str));// NaN
        console.log(parseFloat(str));//NaN

        var str = "12.9";
        console.log(Number(str));// 12.3
        console.log(parseInt(str));// 12
        console.log(parseFloat(str));//12.3

        // bool  -->数值
        // true 为1,fasle 为0
        var flag = true;
        console.log(Number(flag));// 1
        console.log(parseInt(flag));//NaN
        console.log(parseFloat(flag));//NaN


        // null,undefined -->数值
        // obj   -->数值
        var n = null;
        console.log(Number(n));// 0
        console.log(parseInt(n));//NaN
        console.log(parseFloat(n));//NaN

        var n = undefined;
        console.log(Number(n));// NaN
        console.log(parseInt(n));//NaN
        console.log(parseFloat(n));//NaN


        // parseInt 和 parseFloat, 在字符串里能转换
        // 必须数值开头
        var str = "100.88px";
        console.log(parseInt(str));
        console.log(parseFloat(str));

        //其他的场景,建议使用Number()来转换
        // 使用Number()方法,空字符串和null都是0

        //Math
        // Math.round() 四舍五入
        console.log(Math.round(4.5));
        console.log(Math.round(78.466)); //
        // console.log(Math.round(4.1));

        // var num = 100;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • js基础 day01 一.js历史 1.什么是JavaScript 1995年在网景公司,发明的JavaScrip...
    codeTao阅读 194评论 1 2
  • js的历史 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一...
    LaBaby_阅读 284评论 0 2
  • 每天一句:没有方向感,我们不知道自己走向哪里。没有方向感,我们所有的努力就缺乏一个标准,我们每时每刻所有的努力都处...
    EndEvent阅读 638评论 0 2
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,537评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,190评论 4 8