美文网首页
字符串扩展、函数的扩展

字符串扩展、函数的扩展

作者: 追逐_e6cf | 来源:发表于2018-10-11 17:24 被阅读0次

一、字符串扩展
includes() 返回布尔值,表示是否找到了参数字符串
startsWith() 返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith() 返回布尔值,表示参数字符串是否在原字符串的尾部。
repeat(n) repeat方法返回一个新字符串,表示将原字符串重复n次。

let str = "Hello World!";
console.log(str.includes("llo"));
console.log(str.startsWith("Hello"));
console.log(str.endsWith("!"));
console.log(str.repeat(1));

padStart() 用于头部补全
padEnd() 用于尾部补全

let str = "5";
console.log(str.padStart(10, "abcde"))
console.log(str.padStart(10))
console.log(str.padStart(10, ""))

模板字符串

  • 不是单引号或双引号,而是使用反引号
  • 反引号里面引用的内容可以换行
  • 如果需要引入变量,则变量的写法为${}
  • ${}不会与jq内容混合
let person = "World";
let str = `Hello ${person}!`;
console.log(str)
let str = `<div>
  <ul>
    <li></li>
  </ul>
</div>`
console.log(str);

标签模板

console.log`123`;

二、数值的扩展
Number.isFinite() 用来检查一个数值是否为有限的(finite)

console.log(Number.isFinite(15))  //true
console.log(Number.isFinite(0.8))  //true
console.log(Number.isFinite(NaN))  //false
console.log(Number.isFinite(Infinity))  //false
console.log(Number.isFinite(-Infinity))  //false
console.log(Number.isFinite('foo'))  //false
console.log(Number.isFinite('15'))  //false
console.log(Number.isFinite(true))  //false
console.log(Number.isFinite(1/3))  //true

Number.isNaN() 用来检查一个数值是否为NaN

Number.isNaN(NaN);  //true
Number.isNaN(Number.NaN);  //true
Number.isNaN(0/0);  //true
//下面这几个如果使用全局的isNaN()时,会返回true
Number.isNaN("NaN");  //false,字符串"NaN"不会被隐式转换成数字NaN。
Number.isNaN(undefined);  //false
Number.isNaN({}); //false
Number.isNaN("blabla"); //false
//下面都返回false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

parseInt()、parseFloat()

//ES5的写法
parseInt("12.34")  //12
parseInt("123.45#")  //123.45
//ES6的写法
Number.parseInt("12.34")  //12
Number.parseFloat("123.45#")  //123.45

三、Math的扩展
Math.trunc方法用于去除一个数的小数部分,返回整数部分

console.log(Math.trunc(4.1))
console.log(Math.trunc(4.9))
console.log(Math.trunc(-4.1))
console.log(Math.trunc(-4.9))
console.log(Math.trunc(-0.1234))

Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值

Math.sign(-5)  //-1
Math.sign(5)  //+1
Math.sign(0)  //+0
Math.sign(-0)  //-0
Math.sign(NaN)  //NaN
Math.sign('')  //0
Math.sign(true)  //+1
Math.sign(false)  //0
Math.sign(null)  //0
Math.sign('9')  //+1
Math.sign('foo')  //NaN
Math.sign()  //NaN
Math.sign(undefined)  //NaN

Math.cbrt方法用于计算一个数的立方根

console.log(Math.cbrt(-1))  //-1
console.log(Math.cbrt(0))  //0
console.log(Math.cbrt(1))  //1
console.log(Math.cbrt(8))  //2

Math.hypot方法返回所有参数的平方和的平方根

Math.hypot(3, 4);  //5
Math.hypot(3, 4, 5);  //7.0710678118654755
Math.hypot();  //0
Math.hypot(NaN);  //NaN
Math.hypot(3, 4, "foo");  //NaN
Math.hypot(3, 4, "5");  //7.0710678118654755
Math.hypot(-3);  //3

四、函数的扩展

function fn(a, b, c, d){
  //argument.length打印的是实参个数
  console.log(argument.length)
}
console.log(fn.length)  //fn.length返回的是形参的个数
fn(1, 2, 3)
function fn(a, b=3, c, d=1){
  //argument.length打印的是实参个数
  console.log(arguments.length)
}
console.log(fn.length)
fn()
//fn.length会受到这个默认值的影响,遇到默认值的情况就停止下来

五、临时作用域
1.如果说到解析当中,形参当中如果有默认值,会形成一个临时作用域
2.如果在当前的作用域里面去找值,如果没有声明,则往父级去找
3.注意区分已经声明和没有声明的区别

var x = 1;
function fn(x, y=x){  //临时作用域let x; x = 5; y = x = 2;
  console.log(y)
}
fn(5)
var x =1;
function fn(x, y=x){  //let x; x = undefined;  y = x = undefined;
  console.log(y)
}
fn()
var x = 1;
function fn(y=x){  //x =1; y = x = 1;
  console.log(y)
}
fn()
var x = 1;
function fn(x=x){  //let x; x = x;
  console.log(x)
}
fn()
let x = 1;
function fn(x, y=function(){x=2}){  //x=2;
  console.log(x)
  var x = 3;
  console.log(y)
  y();
  console.log(x) //3
}
fn()
let x = 1;
function fn(x, y = function(){x=2}){  //let x = undefined;  x=3;  x=2
  console.log(x)
  x = 3;
  console.log(y)
  y();  //x=2
  console.log(x)  
}
fn()

六、箭头函数
var f = function(v){
return a;
}
var f = 定义变量
=>左边的值(v):形参
=>右边的值(a):return值
箭头函数本身不属于正规函数,是类似函数表达式
apply,bind,call都失效,因为他的作用域本身没有this指针,里面可以存在this指针,this指针指向父级

var f = v => a;
var f = function(a, b){
  let num = a + b;
  console.log(num);
}
f(1, 2)

var f = (a, b) => {
  let num = a + b;
  console.log(num)
  return num;
}
console.log(f(1, 2));
var f = function(){
  console.log(123)
}

var f = () =>{
  console.log(123)
}
let obj = {
  fn:function(){
    console.log(this)
  },
  f:() => {
    console.log(this)
  }
}
obj.fn()
obj.f()

相关文章

  • ES6扩展

    字符串扩展 正则扩展 数值扩展 函数扩展 对象扩展 数组扩展 字符串扩展 模版字符串 部分新的方法 padStar...

  • ES6扩展

    字符串的扩展正则的扩展数值的扩展数组的扩展函数的扩展对象的扩展

  • 2017-12-26es6-函数扩展

    扩展 1、字符串扩展 2、模板字符串 **** 3、数值扩展 4、函数扩展用于分页居多 rest 参数 ...变量...

  • Vue项目开发与规范--es6语法规范篇

    目录 简介 let const 解构赋值 正则的扩展 字符串的扩展 数值的扩展 数组的扩展 函数的扩展 对象的扩展...

  • ES6基础-ES6的扩展

    进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, A...

  • 《ECMAScript 6 入门》笔记

    变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 对象的新增方法 表单验证...

  • c++ 7、字符串

    1、字符串常用函数(原生) 2、字符串常用函数(扩展)

  • JS基础系列(X): ES6入门

    字符串扩展 模板字符串模板字符串可以很方便的代替ES5字符串拼接,格式如下: 代码示例 API 函数扩展 函数默认...

  • 字符串、数组、函数、对象

    字符串 多行字符串 字符串模板 数组 扩展 函数参数的扩展 类数组对象转数组 函数 默认值 以下两种写法的区别? ...

  • ES6 字符串、数组、函数、对象

    字符串 1. 多行字符串 2. 字符串模板 数组 1. 扩展 2. 函数参数的扩展 3. 类数组对象转数组 函数 ...

网友评论

      本文标题:字符串扩展、函数的扩展

      本文链接:https://www.haomeiwen.com/subject/krhbaftx.html