JavaScript 基本语法

与css相似,js在程序中有三种使用方法:内部,内嵌,外嵌。
变量名定义:
0    与c一样,字母数字下划线和$,不能是关键字保留字
1   !必须有意义,推荐翻译网站:有道,爱词霸
2   !遵循驼峰命名法:首字母小写,后面单词的首字母大写。如myFirstName
3   !在某些浏览器中,name有特殊含义,故尽量不用name作为变量名

js的数据类型是只有程序在运行过程中,根据等号右边的值来确定的。js是一种弱类型或者说是动态语言。相同的变量可以用作不同的类型。
 var:定义变量     console.log():输出变量值      prompt:用户输入    alert:弹出对话框
var  myname  =  prompt('请输入您的名字‘);将用户的输入存入myname变量中。
 num=010; num=010;数字前加0表示所定义数为八进制,数字前面加0x表示十六进制。

数字型的三个特殊值:
alert(Infinity);     Infinity表示无穷大
alsert(-Infinity);   -Infinity表示无穷小
alsert(NaN);   NaN代表一个非数值

isNaN()用来判断是否为数字,若是返回false,反之返回true;
字符串部分:
1.字符串引号嵌套:js可用单引号嵌套双引号,或双引号嵌套单引号(主要是因为字符串里不能再出现与字符串相同的引号,会被报错)
2.js的转义字符与c语言类似   \n:换行符 ,n是newline的意思;\\ : 斜杠\ ;  \' :  单引号’; \"  :双引号 ; \t : 缩进;\b : 空格  b是blank的意思。
3.js用length来计算字符串的长度字符串名字.length,  字符串的拼接用+,旧的字符串+任意类型=新的字符串。age=18,'pink'+age  输出结果为pink18。

1.js的布尔值Boolean。null+1值为1,undefined+1为NaN.
2.typeof用来检测数据类型。
数据类型转换:
1.转换为字符串
(1)toString(),num=1,alert(num.toString());
  (2)  String()强制转换,(String(num));
-’0  (3) !! 加号拼接字符串(String(num));(’123‘+’120‘)输出为123120
2.转换为数字型(重点)
(1)!!parseInt(string)函数,转换为整数值类  若转换字符串120px,会输出120.
(2)  !!parseFloat(string)函数,转换为浮点数数值类型
  (3)  Number()强制转换函数,转换为数值型
(4)! is隐式转换(-  *  /),利用算术隐式转换为数值型 ‘12’-0    '123' * 1;(此处与c语言不同,c是‘12‘-’0‘)(’123‘-’120‘)输出为3.
  (5)转换为布尔值
(1)Boolean()an()函数。代表空 否定的值会被转换为false,如' ',NaN, null, undefined.其余值均转换为true.

1.js中10/20结果为0.5.
2.js中的比较运算符多了===和!==. ===为全等,要求值和数据类型都一致。
3.短路运算符与  表达式1&&表达式2  如果第一个表达式值为真,则返回表达式2,反之返回表达式1.或运算符恰与之相反。

代码调试问题
1.断点调试在开发者工具的sourse,程序出来后点击左边可以添加断点,添加断点后需重新刷新浏览器才可以成功添加断点。朝上朝下的箭头可以控制执行方向。可以在watch中添加变量名,这样在调试过程中可以实时监测变量的变化。

1.function(){
//函数体
}
2.(匿名函数)var 变量名=function(){ }; 调用函数时 变量名();
返回值:
(1) 只返回一个值,若多个值由逗号隔开,返回最后一个值
(2)返回多个值可将多个值用[ ]包裹返回。
arguments的使用
1.不确定传入多少形参时,可以用arguments来获取。实际上arguments是当前函数的一个内置对象,所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。
2.arguments的展示形式是一个伪数组。因此可以进行遍历。
伪数组特点{
      具有length属性
      按索引方式储存数组
      不具有数组的push,pop等功能。
}

复制代码
max:function(){
  var max=arguments[0];
  for(var i=1;i<arguments.length;i++){
      if(arguments[i]>max)
          max=arguments[i];  
    }    
}
复制代码

 



作用域
1.(用来限定代码名字的可用范围)(提高程序的可靠性,减少命名冲突)
2.两类:全局作用域,局部作用域
3.js在es6中新增了块级作用域,在此之前,没有块级作用域(在花括号里面即为块级作用域,如java C有块级作用域,在花括号里声明的变量,并不能在外部使用)
4.作用域链   内部函数访问外部函数的变量,采取链式结构进行访问(可以理解为新的赋值会覆盖旧的赋值)
js引擎运行js
1.预解析
①js引擎会把js里面所有的 var和function提升到当前作用域的最前面
(1)变量预解析(把所有的变量声明提升到当前作用域的最前面,不提升赋值操作)
(2)函数预解析(把所有的函数声明提升到当前作用域的最前面,不调用函数)
例:

复制代码
var num=10;
    fun();
    function fun(){
    console.log(num);
    var num=20;
    }
    //相当于执行以下代码
    var num;
    function fun(){
    var num;
    console.log(num);
    num=20;
    }
    num=10;
    fun();     //输出结果为undefined例:
function f1(){
var a=b=c=9;  //相当于var a=9;b=9;c=9;  //b c直接赋值,没有var声明,当全局变量看。(集体声明:var a=9,b=9,c=9)

//相当于执行了以下代码
var b,c;
function f1(){
var a;
a=b=c=9;
}
}
复制代码

2,代码执行

 

posted @ 2020-03-08 22:34  echobbd  阅读(294)  评论(1)    收藏  举报