JavaScript 基本语法
变量名定义:
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));
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,代码执行


浙公网安备 33010602011771号