1. 什么是java script
2. 如何编写,调试js
3. ***变量
4. ***数据类型

一.什么是java script
    HTML:专门编写网页内容的语言,构建整体框架。
    CSS:专门美化网页样式的语言,具有“装修功能”。
    JS:专门编写交互的程序语言
            交互:用户操作,程序处理用户的操作,返回处理结果
        如何运行:
            浏览器:内容排版引擎   js解释引擎
                内容排版引擎:专门解析HTML和渲染CSS的软件
                JS解析引擎:专门解释,并执行js程序的软件
        什么是解释和脚本?
            解释:默认从上向下,读一行,运行一行;后读到相同内容,会覆盖先读到的。
            脚本:不需要预编译,边解释边执行的程序
2.JS发展史:
    1955年:Netscape 公司和Sun 公司联合开发出JavaScript 脚本语言,并在其Netscape Navigator 2 中实现了JavaScript 脚本规范的第一个版本即JavaScript 1.0 版
    1957年:推出了ECMA-262 规范版本,其定义了以JavaScript 为蓝本、全新的ECMAScript 脚本语言。
                其中的区别:
                        ECMAScript:标准,规定
                        JavaScript:Netscape:遵循ECMAScript标准实现的语言
                        JScript:微软遵照ECMAScript标准实现的语言
    1998年:W3C成立,改标准成为了国际ISO标准

3.JavaScript:
    广义的JavaScript=ECMAScript(js的核心语法)+DOM(专门操作网页内容的API)+BOM(专门操作浏览器窗口的API)
    DOM:基于ES标准制定的专门操作网页内容的API。
    API:浏览器已经实现的,开发人员直接使用的编程接口。
    BOM:专门操作浏览器窗口的API;没有标准,各浏览器自行定义。

特点:
    1.代码可使用任何文本编辑工具编写,语法类似于C和Java。
    2.无需编译,有JavaScript引擎解释执行。
    3.弱类型语言
    4.基于对象

二.编写和调试:
4.如何编写和调试:
    JS脚本程序,就是普通文本:用Deamwaerver编写
    运行脚本,分为2种:
        1.独立安装的JS解释器中进行运行:比如Node.js
        2.浏览器的JS解释器
注意:*js程序区分大小写!
         *每条程序的语句都用;结尾

何时使用console:控制台是专门调试程序的地方!
 ---在网页中编写JS:2处:
    1.在<script>元素中:页面中专门编写js程序的区域
            随页面加载过程顺序解释执行
            向页面中输出一行话:直接在body元素中写入html内容
                使用页面的输出功能:docunment.writ("xxxxxx");
                弹出功能:window.alert("xxxx");  --没alert一次,就弹出一次
                每个框都会阻断浏览器的加载和程序执行过程
    2.在元素的事件处理函数中:仅能编写少量
        事件:浏览器自动或用户手动触发的元素状态改变
        事件处理函数:on 事件名
                    本质是元素的一个属性,属性值是一个js语句
    例:
<buttonοnclick="alert('ejwpiobhjfipobhsdpfbn')">点击惊喜
    3.使用外部js文件,单独存储js程序:
            1.创建并编写.js文件:
                    三大文件都要保存为UTF-8编码
            2.在页面中引入.js文件:<script src="url"></script>
   ---加载和执行过程和<script>中完全一样



三.***变量
        什么是变量:内存中存储一个数据的存储空间,再起一个名字。
        何时使用:程序中反复使用的数据,都要先保存
        如何使用:声明  赋值  取值
            1.声明:在内存中创建一个新变量
               如何声明:var 变量名  (仅声明,但未赋值,默认值为undefined)
            注意:1.不能以数字开头
                      2.不能用保留字:js中以及预先使用的关键字
                      3.最好能见名知意:比如驼峰命名(第一个单子首字母小写,之后每个单词首字母大写)
           2.赋值:将等号右边的数据,保存到等号左边的变量中
             如何赋值:变量名=值,*对已经包含值的变量赋新值,新值将覆盖旧值*
           3.取值: 只要使用变量名,在运行时,会被自动替换为变量中的值。
    
    特殊情况:1.只声明,但未赋值的变量,可任意使用,输出为undefined。
                    2.从未声明的变量,不能使用,得到错误提示 Uncaught ReferenceError
                    3.从未声明的变量,缺可赋值  ---和var 不一样
                        强烈建议:必须使用var 声明变量
注意:只要在同一个页面中,前面进行了声明,赋值,后面就可以使用,但是再提前也无法超过本script

例1:
var hb="香辣鸡腿堡";
    console.log(hb);
    box="包子";

console.log(hb);
    console.log(box);        输出分别为:“香辣鸡腿堡”“香辣鸡腿堡”“包子”

****声明提前:子啊程序正式执行前:都会将var声明的变量提前到当前脚本块的顶部集中声明,再开始执行程序。{***赋值留在原地}

四.常量:一旦初始化,值不能改变的量。
    何时使用:程序中,一旦定义不可擅自改变的值,都要用常量保存。
    如何创建:const 常量名=值;用作常量的名字都要大写
    
    注意:

如果强求修改常量的值,不会报错,但也无法修改成功
const PI=3.14;
    var deg=60;
    
    PI=1;//报错?影响结果?结果:不报错,也不影响结果

五.****数据类型:数据在内存中的存储形式
    为什么要有不同数据类型:现实中不同类型的数据,都要专门的用途。
    分类:2大类:“原始类型"的值和“引用类型”的对象
    
    原始类型:值直接保存在变量本地的类型
        5类:Number Srting Boolean Undefined Null
    引用类型:值没有直接保存在变量本地的类型,但是变量中只保存指向实际数据所在位置的地址值
    
            1.Number:表示所有数字
               如何定义:凡是不加引号的数字,都是Number类型数据。
               何时使用:只要做计算或者比较的数字,都不加引号。
                        比如:年龄,价格
                        所占空间:所有数字都是用64位二进制数来存储的  1byte=8bit
                        整数采用32位二进制存储 =为4个字节
                    ---数值大小和所占空间大小无关
                舍入误差:计算机中也有无法精确计算的数字而导致的计算结果精度偏差,不可避免
                解决方案:按指定小数位数四舍五入  --n.toFixed(2)-->将计算结果按2位小数四舍五入
            2.String:字符串,表示所有文字信息
               如何定义:凡是用作显示的信息都要加引号,单双引号。
               何时使用:凡是用作显示的信息都要加引号,JS中没有字符类型,所以一个字也要加引号
               所占空间:字母或数字,每个1字节;每个汉字,2字节
                   JS的内存中都是用字符串的unicode号存储字符
                unicode:人为给主要语言中的每个字符编一个号
            ***字符串一旦创建,值不可改变,非要改变,只能用新的字符串替换旧的字符串
            特殊:+运算中,如果参与运算的都是字符串,则加法变为字符串拼接
        3.Boolean:只有两个值:true ,flase
            何时使用:只要保存对/错,真/假,成立/不成立,都用boolean类型表示。
             如何定义:不带引号的true和flase就是boolean类型