JavaScript基础语法

  • JavaScript —— 一个面向对象的跨平台脚本语言。(高级编程语言)

    JavaScript的组成

    js.png ```
  1. ECMASCRIPT: 定义了javascript的语法规范,描述了语言的基本语法和数据类型 2.BOM:浏览器对象模型(弹出框,浏览器的跳转) 3.DOM:文档对象模型。通过 DOM 可以操作页面中的元素。(增加个 div,减少个 div,给div 换个位置) ```

    JavaScript的引用方式

    分为行内式、内嵌式、外部引用(外链式)

    ```html
  2. 行内式(几乎不用,也不推荐使用) 你好
  3. 内嵌式 3.外部引用 4.错误写法(只能干一件事) 5.ES6模块引入 html中 js中 alert(你好); 下面的这句必须写 export default {}; 特点(重点): 1、引入路径前面必须加 ./ 2、必须通过http协议访问 【注】安装一个live-serve的插件,通过服务器启动我们当前的.html页面 ```

    常量/字面量/直接量

  • 值不可以被修改的叫做常量

    js是弱引用类型的语言

  • 你给他赋值什么样的数据,他就是什么样的数据类型

  • 一般不要给变量改变其中值的数据类型,这样很容易引起歧义

    数据类型

  1. 基本数据类型

数字——- Number
100,-100,3.14
字符型——String
“hello” ‘world’ “你好”(单引号双引号都一样)
布尔值——boolean
tryu,false

特殊数据类型

NaN(not a number)
undefined(数据类型是undefined)
null(数据类型是object)

判断数据类型

  • 使用typeof判断数据类型(typeof的数据类型是以字符串的形式输出)
  1. var num1 = 10;console.log(typeof num1);
  2. var str = “helloworld”;console.log(typeof str);
  3. var Yes = true;console.log(typeof Yes);

    判断里面的数是否是NaN(isNaN() )

    console.log(isNaN(数据));

    强制数据转换

  4. Number(变量)

    • 可以把一个变量强制转换成数值类型
    • 可以转换小数,会保留小数
    • 可以转换布尔值
    • 遇到不可转换的都会返回 NaN
    • 只能纯数字才能转换为数字,其他的为NaN
    • console.log(Number(true)); //1

      1. // console.log(Number(false)); //0<br /> // console.log(Number(undefined)); //NaN<br /> // console.log(Number(null)); //0
  5. parseInt(变量)

    • 从第一位开始检查,是数字就转换,知道一个不是数字的内容
    • 开头就不是数字,那么直接返回 NaN
    • 不认识小数点,只能保留整数
  6. parseFloat(变量)
    • 从第一位开始检查,是数字就转换,知道一个不是数字的内容
    • 开头就不是数字,那么直接返回 NaN
    • 认识一次小数点
  7. 除了加法以外的数学运算
    • 运算符两边都是可运算数字才行
    • 如果运算符任何一遍不是一个可运算数字,那么就会返回 NaN
    • 加法不可以用
  8. Boolean(变量)
    • 在 js 中,只有 ''0nullundefinedNaN,这些是 false,其余都是 true
    • 非空即真,非零即真。

      变量

  • 值可以被改变的量叫做变量
  • 声明变量,申请内存空间并存储。
  • 语法: var 变量名 = 值;
  • 注意:一个变量名只能存储一个值当,再次给一个变量赋值的时候,前面一次的值就没有了变量名称区分大小写(JS 区分大小写)
  • var num1 = 100;num1 = 200;(给变量赋了个新值)
  • 变量细节
  1. 变量初始化:在声明变量的时候直接给这个变量赋值
  2. 如果不给这个变量赋值,系统会默认给他一个值,这个值叫做undefined
  3. 提高开发效率的赋值方法:

var num = null;
num = 10;
console.log(num);

  • 变量的命名语法规则
  1. 必须遵守的,不遵守就是错
    1. 一个变量名称可以由 数字字母英文下划线(_)美元符号($) 组成
    2. 严格区分大小写
    3. 不能由数字开头,不要使用中文汉字命名
    4. 不能是 保留字 或者 关键字
    5. 不要出现空格
  2. 建议遵守的(开发者默认),不遵守不会报错
    1. 变量名尽量有意义(语义化)
    2. 遵循驼峰命名规则,由多个单词组成的时候(myClass),从第二个单词开始首字母大写
    3. 烤串式命名(my_class)

      JS的数学运算中

  • 除数可以为零
  • var num = 10;

    1. console.log(num / 0); //Infinity 无穷大
    2. console.log(-10 / 0); //-Infinity 无穷小
  • 计算机计算小数时会有误差(误差很小)

    JS是弱引用语言

    js是弱数据类型的语言,容错性较高。 定义时不需要定义类型,赋值赋的是啥类型就是啥类型

  1. var temp //temp时啥数据类型?不确定
  2. temp= 12; //temp变量是数字类型
  3. temp = hello”; //temp变量变成了字符串类型

输出

  1. console.log();控制台输出
  2. alert();警告框输出
  3. document.write();html页面中输出

    计算机的组成原理

  4. cpu 2. 内存 3.硬盘

执行程序:先从硬盘将程序读入到内存中,然后在内存中被CPU运行

进制转换

  • 十进制转为二进制

模二取余:十进制除以2,余数倒着往上写。

  • 二进制转为十进制

11001
1+12^3+12^4

  • 八进制和十六进制和十的互相转换:先转化为二进制再转换要转换的进制。
  • 二进制转换为八进制

从右往左数,每三位一组,不足三位的用0补齐。然后将每组数,单独转成十进制。

  • 二进制转换为十六进制

从右往左数,每四位一组,不足四位的用0补齐。然后将每组数,单独转成十进制。

进制在JS中的写法

  1. 十进制:52<br /> 二进制:0b110100(二进制前面加0b)<br /> 八进制:064(八进制前面加0)<br /> 十六进制:0x34(十六进制前面加0x

进制的转换写法

  1. var num1 = 52;

    var num2 = 0b110100;
    var num3 = 064;
    var num4 = 0x34;

    console.log(num1.toString(2));
    console.log(num2.toString(10));
    console.log(num3.toString(2));

  2. var num2 = “110100”;(进制不用加特殊表示方法)

    var newNum = parseInt(num2, 2);
    console.log(newNum);

  3. 总结:第二种方法不管你输入什么值都给你转换为十进制,括号后面第二个值用于描述前面的值是什么进制。

    运算符

  • 算数运算符

+,-,*,/,%(取余)计算机里面没有%号

自动数据类型转换规律

  1. 任何类型的数据和字符串类型的数据做相加(+)操作时,其他数据类型会自动的转换为字符串类型。此时的相加(+)不再是数学意义上的加法,而是表示“拼接”的意思。
  2. 任何数据除了和字符串做相加运算外,与NaN做算术运算的结果始终都是NaN。包括NaN本身和NaN做运算的结果也是NaN。(字符串是数值会自动的转换为数字,否则会转换为NaN)
  3. 任何其他数据除了和字符串做相加操作外,与数字类型做算术运算时,其他数据会自动的转换为数字。(true会自动的转换为1 false会自动的转换为0 null会自动的转换为0 undefined会自动的转为NaN)
  4. 【注】不同数据类型之间的数据,进行运算的问题。

    1. 【隐式/自动数据类型转换】必须先将数据转成同一数据类型,然后在进行运算,由于这个过程是系统自动完成的。
  • 关系运算符

,<,>=,<=,==,!=,===,!==

和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:
  1. 两个操作数都是数值,则数值比较;
  2. 两个操作数都是字符串,则比较两个字符串对应的字符编码值;

    <1>如果两个字符串中都是单个字符 <2>如果是多个字符,必须逐位比较,一旦比较出大小就结束比较。

  3. 两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
    在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
  4. 一个操作数是布尔值,则比较之前将其转换为数值,false 转成 0,true 转成 1;
  5. 一个操作数是字符串,则比较之前将其转成为数值再比较
  6. 一个操作数是 NaN,则==返回 false,!=返回 true;并且 NaN 和自身不等;
  1. 关系运算符中nullundefinedNaN的值为NaN
  • 逻辑运算符

&&,||,!
&&
语法:表达式1 && 表达式2
【注】这两个表达式都为true,才为true。
短路操作:当第一个表达式为false的时候,第二个表达式就不执行了。

  1. || <br /> 语法:表达式1 || 表达式2<br /> 【注】这两个表达式都为false,才为false。<br /> 短路操作:当第一个表达式为true的时候,第二个表达式就不执行了。
  2. !<br /> 语法:!表达式<br /> 【注】取反<br /> 【注】非空即真,非0即真。<br /> 1.操作数是一个空字符串,返回 true;<br /> 2.操作数是一个非空字符串,返回 false;<br /> 3.操作数是数值 0,返回 true;<br /> 4.操作数是任意非 0 数值(包括 Infinity),false;<br /> 5.操作数是 NaN,返回 true;<br /> 6.操作数是 undefined,返回 true;<br /> 短路操作<br /> alerta)报错<br /> &&命题 console.log(5 <4 && alert(a));<br /> ||命题 console.log5>4 || alerta));<br /> 就是利用&&运算符出现一个假命题程序就不会继续往下运行了<br /> ||运算符出现一个真命题就不会继续往下运行了
  • 一元运算符

a++,++a
++后置,先对a取值,作为a++的值,然后对a进行+1操作。
++前置,先对a加1,再取a的值,作为++a的值。
a—,—a
—后置,先取a的值,作为a—的值,然后在对a进行-1操作。
—前置,先对a进行-1,然后在取a的值,作为—a的值。

  • 赋值运算符

=
+=,-+,*=,/+,%=
将等号右边的值赋值给左边
恒等和恒不等
【注】在判断的时候,恒等判断数值和数据类型都相等,为true。
a+=10;相当于a=a+10;

  • 位运算符

^,|,&,<<<,>>>

表达式

表达式:任何运算符和操作数组成的式子叫做表达式。
1、表达式的值
2、表达式的功能
10 + 20就是一个表达式