预定义函数
isNaN本意是通过Number方法把参数转换成数字类型,若转换成功,则返回false,反之返回true,它只是判断参数是否能转成数字,不能用来判断是否严格等于NaN。,如果要判断某个值是否严格等于NaN不能用这个方法
ES6提供了Number.isNaN方法用来判断一个值是否严格等于NaN,它会首先判断传入的值是否为数字类型,如果不是,则返回false。
区别:
isNaN方法首先转换类型,而Number.isNaN方法不用;
isNaN不能用来判断是否严格等于NaN,Number.isNaN方法可用
1.eval()
将字符串数字转换成数字,可进行直接执行
js
代码
2.isNaN()
用来计算一个参数以确定它是否为非数字
isNaN() 函数用于检查其参数是否是非数字值。
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
isNaN本意是通过Number方法把参数转换成数字类型,若转换成功,则返回false,反之返回true,它只是判断参数是否能转成数字,不能用来判断是否严格等于NaN。,如果要判断某个值是否严格等于NaN不能用这个方法
ES6提供了Number.isNaN方法用来判断一个值是否严格等于NaN,它会首先判断传入的值是否为数字类型,如果不是,则返回false。
区别:
isNaN方法首先转换类型,而Number.isNaN方法不用;
isNaN不能用来判断是否严格等于NaN,Number.isNaN方法可用
3.parseInt()/
parseFloat
()
将数字字符串转化为一个数值
4.isFinite()
用来确定参数是否是一个有限数值
.
也就是说
,
如果该参数为非数字
NaN
,
正无穷数
,
或负无穷数
,
则返回
false,
否则返回
true;
如果是字符串类型的数字
,
将会自动关转化为数字型
.
5. escape
函数
/
unescape
()
将字符串进行编码和解码,这样就可以在所有的计算机上读取该字符串。
返回值
:
已编码的
string
的副本。其中某些字符被替换成了十六进制的转义序列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- this
<button onclick="box()" id="btn">按钮</button> -->
</body>
<script>
// 预定义函数
// 1.eval() 将字符串数字转换成数字,可进行直接执行js代码
// 2.isNaN() 用来计算一个参数以确定它是否为非数字
// isNaN() 函数用于检查其参数是否是非数字值。
// 如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
// isNaN本意是通过Number方法把参数转换成数字类型,若转换成功,则返回false,反之返回true,它只是判断参数是否能转成数字,不能用来判断是否严格等于NaN。,如果要判断某个值是否严格等于NaN不能用这个方法
// ES6提供了Number.isNaN方法用来判断一个值是否严格等于NaN,它会首先判断传入的值是否为数字类型,如果不是,则返回false。
// 区别:
// isNaN方法首先转换类型,而Number.isNaN方法不用;
// isNaN不能用来判断是否严格等于NaN,Number.isNaN方法可用
// 3.parseInt() / parseFloat() 将数字字符串转化为一个数值
// 4.isFinite() 用来确定参数是否是一个有限数值.也就是说, 如果该参数为非数字NaN, 正无穷数, 或负无穷数, 则返回false, 否则返回true; 如果是字符串类型的数字, 将会自动关转化为数字型.
// 5. escape函数 / unescape() 将字符串进行编码和解码,这样就可以在所有的计算机上读取该字符串。
// 返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列
//eval()把字符串当作js代码执行
// console.log("1+1");
// console.log(eval("1+1"));
// "alert(1111)"
// eval("alert(1111)");
// isNaN(参数) 判断参数是否是NaN,如果是,返回true, 否则返回false
// isNaN(参数) 全局方法 会进行类型转换 再判断是否是NaN
// 1.参数是NaN,会返回true
// 2.参数进行类型转换,转数字失败也会得到NaN,也会返回true
// 1.Number.isNaN(参数) 不会进行类型转换 只有参数是NaN才返回true, 否则返回false
// console.log(isNaN(NaN));//true
// console.log(isNaN("abc"));//true 类型转换
// console.log(isNaN(123));//true
// console.log(Number.isNaN(NaN));//true
// console.log(Number.isNaN("abc"));//false
// console.log(Number.isNaN(123));//false
// var a = 123 + undefined
// console.log(Number.isNaN(a));//true
// console.log(Number.isNaN(123 + null));//false
// console.log(Number.isNaN("abc" + 123));//false
// console.log(Number.isNaN("abc" - 123));//true
// isFinite(参数) 判断参数是否是一个有限数值 如果是有限数值,返回true,否则返回false(NaN, Infinity,-Infinity,..)
// 会进行类型转换
// Number.isFinite(参数) 判断参数是否是一个有限数值
// 不会进行类型转换
// console.log(isFinite(123));//true
// console.log(isFinite("123"));//true
// console.log(isFinite("123a"));//NaN false
// console.log(isFinite(true));//true
// console.log(isFinite(1 / 3));//true
// console.log(isFinite(1 / 0));//Infinity false
// console.log(isFinite(-1 / 0));//-Infinity false
// encodeURI(参数) 参数:字符串
// 把字符串转义为计算机编码
// 编码
// decodeURI(参数) 参数:字符串
// 解码
</script>
</html>
自定义函数
function 函数名(){
函数体;
}
说明:
function 定义函数关键字,
“函数名” 是你给函数取的名字,
“函数体” 是为完成特定功能的代码。
函数名 必须是唯一的
函数定义好后,不能自动执行,需要调用它,直接在需要的位置写函数名。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button onclick="sayHello()">按钮</button>
</body>
<script>
//自定义函数
// function 函数名() {
// 函数体;
// }
// 说明:
// function 定义函数关键字,
// “函数名” 是你给函数取的名字,
// “函数体” 是为完成特定功能的代码。
// 函数名 必须是唯一的
//函数定义好后,不能自动执行,需要调用它,直接在需要的位置写函数名。
// 调用函数
// sayHello();
// sayHello();
// 一个函数定义好了后,不会自动执行,需要调用
// 驼峰式命名法
// 定义函数
// function 函数名(){
// 函数体;
// }
// 调用函数
// 函数名()
// function sub2() {
// var a = 10, b = 5;
// return a - b;
// return true;
// return;//函数运行后得到的具体值
// }
// 返回值
// var flag = sub2();
// console.log(flag);
//自定义函数例子
// var count = 0;
// function sayHello() {
// count = count + 1;
// alert("hello world" + count);
// }
// confirm() 布尔值 true false
// propmt() 字符串 / null
// function box(){}
// box()
// 匿名函数
// var box = function () {
// alert("hello world");
// };
// console.log(box);
// box();
// IIFE(Immediately Invoked Function Expression) 立即调用函数表达式
// 自我执行函数
// 这里的 ~ , * , + , - , !等其他一元操作符,
// 其效果相当于:
// (function () {
// alert("hello world");
// })();// 模仿块级作用域
// 把该函数变成自执行函数
// +function () {
// alert("hello world");
// }();
// -function () {
// alert("hello world");
// }();
// ~function () {
// alert("hello world");
// }();
// !function () {
// alert("hello world");
// }();
</script>
</html>
函数传参
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// //定义函数
// function zhazhi(a) {//形参a,b
// alert(a + "汁"); //“苹果”+“汁"
// }
// // 调用函数
// zhazhi("苹果");//实参zhazhi("苹果");//实参
//定义函数
function zhazhi(a, b) {//形参a,b
alert(a + b + "汁"); //“苹果”+“汁"
}
// 调用函数
zhazhi("苹果", "桃子");//实参zhazhi("苹果","桃子");//实参
zhazhi("火龙果", "柠檬");
//复用高 封装代码
//求2个数的和
// function add(x, y) {
// return x + y;
// }
// //调用函数
// var sum = add(96, 5);
// console.log(sum);
function fun(a, b, c) {
console.log(arguments);//参数对象
console.log(arguments.length);//实参个数
// console.log(arguments.callee)//函数本身
//fun();//递归 函数自己调用自己
// arguments.callee();//递归 函数自己调用自己
}
fun(1, 2, 3)
// 5! 5x4x3x2X1
function jicheng(n) {
if (n <= 1) {
return 1;//跳转语句终止函数找出口
}
//return n * jicheng(n - 1);
return n * arguments.callee(n - 1);
}
//console.log(jicheng(5);
console.log(jicheng(10));
//console.log(fun);
</script>
</head>
<body>
</body>
</html>